I de flesta fall skulle du göra det har två sidor. Den första sidan, klientsidan, ringer till en annan sida, serversidan, och visar en ganska snurrande sak medan den väntar. När sidan på serversidan har laddats färdigt (när din fråga är klar) får din första sida ett svar och sedan kan du dölja det ganska snurrande så att användaren vet att den är klar.
Du kan använda AJAX - i rent Javascript eller mycket enklare i jQuery - för att dynamiskt ladda en del data från din PHP-sida och visa en snurrande sak medan den väntar. Jag har använt jQuery här.
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 (min_php_sida.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
?>