Mysql
 sql >> Base de données >  >> RDS >> Mysql

Afficher l'image de chargement pendant l'exécution de PHP

Dans la majorité des cas, vous seriez avoir deux pages. La première page, côté client, appelle une autre page, côté serveur, et affiche une jolie chose qui tourne pendant qu'elle attend. Lorsque la page côté serveur a fini de se charger (lorsque votre requête est terminée), votre première page reçoit une réponse, puis vous pouvez masquer la jolie chose qui tourne pour faire savoir à votre utilisateur que c'est terminé.

Vous pouvez utiliser AJAX - en Javascript pur ou beaucoup plus simplement en jQuery - pour charger dynamiquement certaines données de votre page PHP et afficher un truc qui tourne pendant qu'il attend. J'ai utilisé jQuery ici.

CSS

#loading_spinner { display:none; }

HTML

<img id="loading_spinner" src="loading-spinner.gif">

<div class="my_update_panel"></div>

jQuery

$('#loading_spinner').show();

var post_data = "my_variable="+my_variable;
$.ajax({
    url: 'ajax/my_php_page.php',
    type: 'POST',
    data: post_data,
    dataType: 'html',
    success: function(data) {
        $('.my_update_panel').html(data);
//Moved the hide event so it waits to run until the prior event completes
//It hide the spinner immediately, without waiting, until I moved it here
        $('#loading_spinner').hide();
    },
    error: function() {
        alert("Something went wrong!");
    }
});

PHP (ma_page_php.php)

<?php
// if this page was not called by AJAX, die
if (!$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') die('Invalid request');

// get variable sent from client-side page
$my_variable = isset($_POST['my_variable']) ? strip_tags($_POST['my_variable']) :null;

//run some queries, printing some kind of result
$SQL = "SELECT * FROM myTable";
// echo results
?>