Page 1 sur 1
Message d'attente lors de l'execution d'un script
Posté : 28 mai 2007, 10:05
par orgerix
Bonjour,
J'ai un script assez long qui doit s'executer (a peu près 5 minutes) lors de l'insertion de données. Comment faire pour que les utilisateurs aient un message d'attente ?
Posté : 28 mai 2007, 10:08
par jed
Oufff... en effet 5mn c'est pas de la tarte... A part une animation flash je voie pas...
Posté : 28 mai 2007, 10:12
par MrPink
Tu peux faire cela en JavaScrit avec un display off au lancement de ton code et display on à la fin.
J'essai de retrouver le bout de code et je l'envoi.
@+
Edit : Vala, j'avais fait un truc dans ce genre =>
Avant le début du code php
Code : Tout sélectionner
<div name="wait" id="wait" align="center"><img src='une gif animée'></div>
et à la fin du code php
Code : Tout sélectionner
<script language="javascript">
document.all['wait'].style.visibility="hidden";
</script>
Posté : 28 mai 2007, 11:07
par orgerix
OK, merci.
Sinon, il me semblait que la page était envoyé une fois le code executé. Je me trompe ?
En fait, vu qu'il y a redirection à la fin du sciprt, ca serait plutot
ce code mais bon, merci pour l'idée.
Posté : 28 mai 2007, 11:37
par Ryle
Je me trompe peut être, mais il me semble bien que la page html est envoyée au fur et à mesure (et c'est d'ailleurs ce qui pose problème avec les headers quand du code est transmis au navigateur au préalable).
Tu peux donc normalement faire afficher une page d'attente avec une animation pour indiquer que ca travail, avant de commencer ton traitement php.
L'intérêt de l'affichage/masquage en javascript est assez limité si tu fais une redirection ensuite, mais cela peut être pratique lorsque l'on reste sur la même page, le temps que celle-ci soit chargée

Posté : 28 mai 2007, 11:42
par orgerix
Je l'avais bien compris
Je vais donc tester la solution.
Posté : 28 mai 2007, 12:47
par zeus
Cette solution est non-viable pour plusieurs raisons :
1/ même si le code est envoyé au buffer au fur et à mesure, la taille du buffer, donc le délai avant envoi du code vers le navigateur est configurable par le serveur ... donc soumis à modification
2/ certains navigateurs (comme IE) attendent d'avoir reçu tout le code pour l'afficher.
La solution que j'envisagerais, serait d'afficher une page simple contenant le message d'erreur et une redirection HTML <meta refresh> pointant sur le script prennant du temp.
Posté : 28 mai 2007, 14:43
par Sékiltoyai
Sinon il y a une solution très simple : réduit la lourdeur de tes requètes...
Posté : 30 mai 2007, 13:59
par orgerix
Et bien cette so:ution n'est pas trop possible, car j'ai environ 300 noms pour lesquels il faut à chaque fois que je charge une page pour récupérer des informations.
Finalement, je pense que je vais me touner vers Ajax qui me semble adapté à la situation.
Re: Message d'attente lors de l'execution d'un script
Posté : 25 janv. 2017, 18:51
par philoupuke
Bonjour, je voudrais simplement effacer traitement en cours après la boucle de recherche, une solution , ci joint le code
<?php
echo '<b> </br></br>';
echo '<table border=1 summary="">';
echo '<tr>';
echo '<td width=250 align="center" bgcolor="lightskyblue">Date</td>';
echo '<td width=150 align="center" bgcolor="lightskyblue">N° Facture</td>';
echo '<td width=300 align="center" bgcolor="lightskyblue">Code client </td>';
echo '<td width=50 align="center" bgcolor="lightskyblue">Client</td>';
echo '<td width=50 align="center" bgcolor="lightskyblue">Montant TTC</td>';
echo '<td width=80 align="center" bgcolor="lightskyblue">Solde</td>';
echo '</tr>';
echo '<div id="msg" >Traitement en cours ...</div>';
$sql="SELECT DATE_FORMAT(facture.datefac,'%d/%m/%Y') date,facture.idfac,facture.idclient,facture.nomcli,facture.mtttc,facture.solde FROM facture WHERE 1 ORDER BY facture.datefac DESC ";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_assoc($req))
{
echo '<tr>';
echo '<td width=150 align="center">'.$data['date'].'</td>';
$x=$data['idfac'];
echo "<td><center><a href=\"affichefacture.php?ref=".$x."\">$x<width='20' height='20' ></a></center></td>";
//echo '<td width=300 align="center">'.$data['idfac'].'</td>';
echo '<td width=300 align="center">'.$data['idclient'].'</td>';
echo '<td width=300 align="center">'.$data['nomcli'].'</td>';
echo '<td width=300 align="center">'.$data['mtttc'].'</td>';
echo '<td width=50 align="center">'.$data['solde'].'</td>';
echo '</tr>';
}
// C'est la que je voudrais cacher le message traitement en cours ..
?>
Merci d'avance pour votre aide