chargement d'une page long

chargement d'une page long - PHP - Programmation

Marsh Posté le 27-02-2006 à 09:59:05    

Bonjour,
 
j'ai une page qui est assez longue à se charger, 30s à 1min.
je voudrais afficher un message d'attente.
est ce que c'est possible sachant que cette page fait des traitements php et execute des requetes vers une bdd.
si oui comment faire ??
j'ai essayer du javascript, mais ça ne fonctionne pas.
 
merci

Reply

Marsh Posté le 27-02-2006 à 09:59:05   

Reply

Marsh Posté le 27-02-2006 à 10:08:01    

Salut,
pour faire ça tu as deux solutions. La première est "la page d'attente", autrement dit c'est une page qui est affichée avant la celle du traitement et qui contient un message d'attente.
 
L'autre solution, dont le fonctionnement est plutôt hasardeux, consiste à créer le contenu de la page, entièrement ou partiellement, avec le message d'attente et dans le <body OnLoad="hide_message()"> donc l'appel à la fonction chargée de masquer le message d'attente et ensuite vider les buffers avce flush() et ob_flush().

Reply

Marsh Posté le 27-02-2006 à 14:24:28    

J'ai essayer de faire une page d'attente qui s'affiche avant.
 
mais elle s'affiche rapidement puis passe sur la page suivante où j'ai toujours mon attente sur une page blanche.
j'utilise la methode du site de la sncf trouvé sur cette page :  
 
 
[url]
http://forum.hardware.fr/hardwaref [...] 1867-1.htm
[/url]
 
voici mon code  

Code :
  1. <html>
  2. <head>
  3. </head>
  4. <script type="text/JavaScript" src="site.js"></script>
  5. <script type="text/JavaScript">
  6. function envoie_stat(){
  7. document.envoyer.submit();
  8. }
  9. </script>
  10. <body onLoad="envoie_stat();">
  11. <form name="envoyer" action="if_stat_abo.php">
  12. <input type="hidden" name="envoi" value="1">
  13. </form>
  14. <center>
  15. <table width="740" bordercolor="#606CC3" border="1" >
  16. <tr><td class="Titre1" height="30">Statistique</td></tr>
  17. <tr><td>
  18.  Patientez ...
  19. </td></tr>
  20. </table>
  21. </center>
  22. </body>
  23. </html>

Reply

Marsh Posté le 27-02-2006 à 14:42:21    

(balises <center> à bannir)
Sinon je dirais.... AJAX POWER! Ca réduit la compatibilité (comme je le dis toujours) mais là au moins tu peux balancer ta requête http et attendre que tout soit terminer avant de passer à la page suivante.
 
AJAX?? =>> Google!

Reply

Marsh Posté le 28-02-2006 à 10:19:42    

merci, j'ai trouvé ce que je voulais à l'aide de Ajax.
 
j'affiche une partie de ma page avec un message patientez et lorsqu'elle a fini de se charger, je cache le patientez et j'affiche mes données.

Reply

Marsh Posté le 28-02-2006 à 15:55:25    

j'ai essayer avec un nombre plus important de données, et j'ai d'abord une page blanche et seulement ensuite l'affichage du message patientez puis mes infos.
est ce que je pourrais avoir le message patientez directement???
 
voici mon code

Code :
  1. var xhr_object = null;
  2. function getXhr(){
  3. if(window.XMLHttpRequest) // Firefox   
  4.     xhr_object = new XMLHttpRequest(); 
  5. else if(window.ActiveXObject) // Internet Explorer   
  6.     xhr_object = new ActiveXObject("Microsoft.XMLHTTP" ); 
  7. else { // XMLHttpRequest non supporté par le navigateur   
  8.     alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." ); 
  9.     return
  10. }
  11. //
  12. getXhr();
  13. xhr_object.onreadystatechange = function(){
  14. // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
  15.   if(xhr_object.readyState == 4 && xhr_object.status == 200){
  16.    document.getElementById('liste').style.display="block";
  17.    document.getElementById('attente').style.display="none";
  18.   }
  19. }
  20. xhr_object.open("GET", "stat.php", true);
  21. xhr_object.send(null);


 
je rentre sur la page stat.php en faisant un lien venant d'une autre page et le code ci dessus ce trouve dans la page stat.php.
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed