Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ladebild anzeigen, während PHP ausgeführt wird

In den meisten Fällen würden Sie zwei Seiten haben. Die erste Seite, clientseitig, ruft eine andere Seite, serverseitig, auf und zeigt während des Wartens ein ziemlich drehendes Ding. Wenn die serverseitige Seite fertig geladen ist (wenn Ihre Abfrage abgeschlossen ist), erhält Ihre erste Seite eine Antwort und dann können Sie das hübsche sich drehende Ding ausblenden, um Ihren Benutzer wissen zu lassen, dass es fertig ist.

Sie können AJAX - in reinem Javascript oder viel einfacher in jQuery - verwenden, um dynamisch einige Daten von Ihrer PHP-Seite zu laden und ein sich drehendes Ding anzuzeigen, während es wartet. Ich habe hier jQuery verwendet.

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 (meine_php_seite.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
?>