Message d'attente lors de l'execution d'un script

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Message d'attente lors de l'execution d'un script

Re: Message d'attente lors de l'execution d'un script

par philoupuke » 25 janv. 2017, 18:51

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

par orgerix » 30 mai 2007, 13:59

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.

par Sékiltoyai » 28 mai 2007, 14:43

Sinon il y a une solution très simple : réduit la lourdeur de tes requètes...

par zeus » 28 mai 2007, 12:47

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.

par orgerix » 28 mai 2007, 11:42

Je l'avais bien compris :wink:

Je vais donc tester la solution.

par Ryle » 28 mai 2007, 11:37

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 :)

par orgerix » 28 mai 2007, 11:07

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.

Code : Tout sélectionner

<script> document.location.replace('adresse') </script>

par MrPink » 28 mai 2007, 10:12

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>

par jed » 28 mai 2007, 10:08

Oufff... en effet 5mn c'est pas de la tarte... A part une animation flash je voie pas...

Message d'attente lors de l'execution d'un script

par orgerix » 28 mai 2007, 10:05

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 ?