begin process at 2008 09 06 22:14:50
1 237 973 membres
355 nouveaux aujourd'hui
14 314 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

AFFICHER MESSAGE D'ATTENTE (PAGE EN COURS DE CHARGEMENT) PENDANT LA CONSTRUCTION DE LA PAGE ASP


Information sur la source

Catégorie :Astuces Classé sous : load, loading, wait, attente, chargement Niveau : Débutant Date de création : 24/11/2004 Date de mise à jour : 25/11/2004 09:16:56 Vu : 28 180

Note :
9,13 / 10 - par 8 personnes
9,13 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (26)
Ajouter un commentaire et/ou une note

Description

L'idee est simple :                                                              
  Faire patienter l'utilisateur avec un message d'attente                        
pendant le chargement (parfois assez long) de la page (construction cote server)'
                                                                                  
Principe :                                                                        
  - Savoir de quelle maniere les parametres ont ete poste (GET / POST)            
  - Recuperer les infos postees (FORM / QUERYSTRING)                              
  - Afficher le message d'attente                                                
  - Reposter les infos                                                            

Ajouter <!--#include file="WAIT.asp"--> comme première ligne dans vos pages ASP

Le code du fichier WAIT.asp est ci-joint. Ca marche dans mon application, mais il faudrait tester chez vous pour voir si tous les cas fonctionnent...

Source

  • <%
  • '-- Initialisation variable WAIT_refresh
  • ' Permet de savoir si on a deja affiche l'ecran d'attente ou pas (valeur = 1 ou 0)
  • if isempty(session("WAIT_refresh")) OR isnull(session("WAIT_refresh")) then
  • session("WAIT_refresh")="0"
  • end if
  • '-- Si on a pas encore affiche le message d'attente (WAIT_refresh=0) :
  • '
  • ' On l'affiche, on prepare la redirection, et on arrete le traitement de la page en cours,
  • ' et on signale que l'on a deja affiche le message d'attente (WAIT_refresh)
  • if session("WAIT_refresh")="0" then
  • session("WAIT_refresh")="1"
  • %>
  • <html>
  • <head>
  • <title></title>
  • <!--#include file="styles.inc"-->
  • </head>
  • <body>
  • <TABLE BORDER=0 align="center" height="100%">
  • <tr>
  • <td height="100%" valign="middle">
  • <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=1 CLASS="Table" width="250" height="1">
  • <TR class="Table_Titre"><td class="Table_Titre">Chargement en cours</td></TR>
  • <TR class="Table_SSTitre"><td class="Table_SSTitre" align="center"><br><img src="await.gif"><br>Veuillez patienter...<br>&nbsp;</td></TR>
  • </table>
  • </td>
  • </tr>
  • </TABLE>
  • <DIV style="visibility:hidden">
  • <form name="WAIT_go" method="post" action="http://<%=request.servervariables("SERVER_NAME")%><%=request.servervariables("PATH_INFO")%><%if request.servervariables("QUERY_STRING") <>"" then%>?<%=request.servervariables("QUERY_STRING")%><%end if%>">
  • <%
  • for each item in request.form
  • response.write "<input type='hidden' name='" & item & "' value='" & request.form(item) & "'>"
  • next
  • %>
  • </form>
  • </div>
  • <script>
  • <!--
  • document.WAIT_go.submit();
  • //-->
  • </script>
  • </body>
  • </html>
  • <%
  • response.end
  • else
  • '
  • '-- Si on a deja affiche le message d'attente (WAIT_refresh=1):
  • '
  • ' On ne fait rien, mais on signale que l'on ne veux plus le message d'attente (WAIT_refresh)
  • '
  • session("WAIT_refresh")="0"
  • end if
  • %>
<%
'-- Initialisation variable WAIT_refresh
' Permet de savoir si on a deja affiche l'ecran d'attente ou pas (valeur = 1 ou 0)
if isempty(session("WAIT_refresh")) OR isnull(session("WAIT_refresh")) then
	session("WAIT_refresh")="0"
end if

'-- Si on a pas encore affiche le message d'attente (WAIT_refresh=0) :
'
' On l'affiche, on prepare la redirection, et on arrete le traitement de la page en cours,
' et on signale que l'on a deja affiche le message d'attente (WAIT_refresh)
if session("WAIT_refresh")="0" then
	session("WAIT_refresh")="1"
	%>
	<html>
	<head>
	<title></title>
	<!--#include file="styles.inc"-->
	</head>
	<body>
	<TABLE BORDER=0 align="center" height="100%">
		<tr>
			<td height="100%" valign="middle">
				<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=1 CLASS="Table" width="250" height="1">
					<TR class="Table_Titre"><td class="Table_Titre">Chargement en cours</td></TR>
					<TR class="Table_SSTitre"><td  class="Table_SSTitre" align="center"><br><img src="await.gif"><br>Veuillez patienter...<br>&nbsp;</td></TR>
				</table>
			</td>
		</tr>
	</TABLE>
	<DIV style="visibility:hidden">
		<form name="WAIT_go" method="post" action="http://<%=request.servervariables("SERVER_NAME")%><%=request.servervariables("PATH_INFO")%><%if request.servervariables("QUERY_STRING") <>"" then%>?<%=request.servervariables("QUERY_STRING")%><%end if%>">
			<%
			for each item in request.form
				response.write "<input type='hidden' name='" & item & "' value='" & request.form(item) & "'>"
			next
			%>
		</form>
	</div>
	<script>
	<!--
		document.WAIT_go.submit();
	//-->
	</script>
	</body>
	</html>
	<%
	response.end
else
	'
	'-- Si on a deja affiche le message d'attente (WAIT_refresh=1):
	'
	' On ne fait rien, mais on signale que l'on ne veux plus le message d'attente (WAIT_refresh)
	'
	session("WAIT_refresh")="0"
end if
%>

25 novembre 2004 09:16:56 :
SImplification du code
  • signaler à un administrateur
    Commentaire de ThunderPsycho le 25/11/2004 11:05:15

    Ouai c pas mal et bien commenté, mais il faut vraiment avoir des requêtes ou des opérations lourdes pour avoir des traintements supérieurs à 1 seconde...

    Je trouve qu'il est plus intéressant d'avoir un message d'attente sur une page web lors du téléchargement du code et des graphismes, mais c'est mon avis :o)

    -> 7/10

  • signaler à un administrateur
    Commentaire de Boreux le 25/11/2004 11:36:49

    Benh oui, d'ou ma remarque :

    [B]Faire patienter l'utilisateur avec un message d'attente
    8pendant le chargement (parfois assez long) de la page (construction cote server)'[/B]

    Ici, je suis en Intranet, et c'est utile pour mes applications qui accèdent à de nombreux enregistrements (J'attaque des Bases Oracle)...

  • signaler à un administrateur
    Commentaire de Keneyda le 25/11/2004 13:03:06

    Tres bon script,
    Pour ThunderPsycho : "Il est effectivement non nécessaire pour les requetes courtes, mais peut etre fortement utilile lorsque la page est composé de multiple tableaux imbriqués qui sont souvent le faites de l'attente des pages..."

    Pour Boreux : "Rien a redire... Chapeau..., mise en place tres tres simple..."


    Bon prog a tous,

    Keneyda

  • signaler à un administrateur
    Commentaire de Boreux le 25/11/2004 15:09:14

    Une petite remarque aux programmeurs qui utilisent ce code pour revenir à la page précédente :

    <a href="javascript:history.go(-1)">Retour</a>

    Ceux-ci devront mettre (-2) pour revenir sur la page précédente... Effectivement, il y a une page intermédiaire maintenant : WAIT.ASP

  • signaler à un administrateur
    Commentaire de ThunderPsycho le 25/11/2004 19:18:04

    Ok, ce que je voulais dire c'est que même sur des requêtes multiples et des opérations lourdes sur celles-ci, si ton serveur mets + d'une seconde pour compiler ton code, l'exécuter et générer un résultat,
    il y a peut-être du travail à faire au niveau de l'optimisation de ton ou tes serveurs webs, et de tes serveurs de base de données.

    Perso je gère un cluster web où sur nos sites à forte charge, le délai de réponse d'un serveur doit être < 1 seconde en pointe afin de ne pas pénaliser la navigation, surtout quand plusieurs fichiers asp sont appelés par page......

    Bonne continuation

  • signaler à un administrateur
    Commentaire de Keneyda le 25/11/2004 19:43:20

    Je suis d'accord, mais ce code est interessant lorsque la structure meme de la page est lourde (photos, tableau...), j'ai fait le test avec une image de 6 Mo (je sais on ne le fait jamais, mais en local deja cela fonctionne...)

    Effectivement si le temps de reponse du serveur est long, il y a du soucis à ce faire par rapport à la structure de l'hebergement, ou de l'optimisation du code...

    Bonne prog à tous

    Keneyda

  • signaler à un administrateur
    Commentaire de fabrice69 le 26/11/2004 09:56:23 administrateur CS

    Pas mal du tout.

    Romelard Fabrice.

  • signaler à un administrateur
    Commentaire de Boreux le 27/11/2004 12:52:58

    Je suis d'accord avec toi ThunderPsycho mais le web n'est pas fait que pour faire des sites internet, il est utile aussi pour des APPLICATIONS (Internet ou Intranet), et lorsque l'on doit consulter plusieurs centaines de milliers d'enregistrements (ce qui est mon cas) et faire toutes sortes de filtres pour avoir la ou les informations recherchées, ce code est très utile...

  • signaler à un administrateur
    Commentaire de Boreux le 27/11/2004 12:58:55

    Enfin, une dernière chose concernant l'optimisation serveurs & bases de données : je travaille dans une grosse société qui traite d'aérospatial. Tout est donc mis en oeuvre pour optimiser réseaux, serveurs, etc (filbre optique, réseau 100Mbits, Serveurs Oracles, ...).

  • signaler à un administrateur
    Commentaire de Benz le 07/01/2005 08:49:47

    Merci pour ce code Boreux, ca faisait longtemps que je cherchais comment faire... je sens qu'il va m'être bien utile ;-)

    Petite remarque à ThunderPsycho :
    Tout comme Boreux, je vais placer ce code sur un intranet composé de pages qui contiennent de nombreuses requètes croisées, etc... et qui intérrogent plusieurs dizaines de milliers d'enregistrements. Alors on a beau optimiser le code, au bout d'un moment, quand la base est énorme, elle est énorme... :-) et on ne peut que prendre son mal en patience pour avoir le résultat.

  • signaler à un administrateur
    Commentaire de larfanou le 02/11/2005 18:14:10

    Tout d'abord félicitations à l'auteur de ce code, qui va m'etre bien utile.
    Je l'ai testé, il fonctionne nikel, par contre, étant débutant en asp, serait il possible de m'expliquer un peu plus en détails les lignes de codes du fichier wait.asp qui se trouve dans la balise <DIV>... car je ne comprends pas tout et j'aimerais satisfaire ma curiosité.
    D'avance merci,
    Steff

  • signaler à un administrateur
    Commentaire de boreuxc le 02/11/2005 19:02:20

    Tout est dans les commentaires... Qu'est-ce que tu ne comprends pas ?

  • signaler à un administrateur
    Commentaire de boreuxc le 02/11/2005 19:23:33

    En bref, admettons que tu viennes d'un formulaire, ou que tu fasses appel à une page avec des paramètres (du style mapage.asp?toto=1&tutu=2), ce qu'il y a dans <DIV> récupère tout ces paramètres (POST ou GET) et les reposte (mais sans afficher la barre de progression cette fois).

    Plus clairement : tu fais 2 fois appel à la même page. La première fois, tu affiches un sablier (barre de progression) et tu vas pas plus loin (tu mémorises juste les infos POST et GET et tu reposte la même page). La seconde fois, tu affiches le résultat

  • signaler à un administrateur
    Commentaire de larfanou le 03/11/2005 09:43:17

    Merci pour ce complément d'informations. Quand tu dis "tu affiches le résultat", tu parles de la page que l'on a chargée ? (pas wait.asp ?
    Dis moi, j'ai posé une autre question sur le forum, voir lien ci-dessous, t'aurais pas une idée ?
    http://www.aspfr.com/forum.v2.aspx?ID=592441
    Encore merci,
    Steff

  • signaler à un administrateur
    Commentaire de boreuxc le 03/11/2005 09:50:59

    Oui le résultat de la page que tu as demandé de charger.
    Pour la question, je vais lire...

  • signaler à un administrateur
    Commentaire de larfanou le 03/11/2005 10:07:45

    Ok, merci...
    Sinon, tu peux m'expliquer le bout de code:

    For each item in request.form
      response.write "<input......."
    Next

    Encore merci... je suis un vrai débutant en ASP ;o)

  • signaler à un administrateur
    Commentaire de boreuxc le 03/11/2005 10:16:50

    si tu venais d'un formulaire avant de rentrer dans WAIT.asp, cette boucle recrée l'entièreté de tes zones de formulaires (en caché) avant de reposter

  • signaler à un administrateur
    Commentaire de larfanou le 03/11/2005 11:06:32

    Ok, j'ai maintenant enfin tout compris... ;o)
    Merci bcp pour tes explications et ta patience.

  • signaler à un administrateur
    Commentaire de boreuxc le 03/11/2005 11:20:12

    Tu as voté pour mon script ? Si pas merci de le faire...

  • signaler à un administrateur
    Commentaire de larfanou le 03/11/2005 11:32:34

    Oui, j'ai mis 10/10 !

  • signaler à un administrateur
    Commentaire de dolten le 11/05/2006 11:48:33

    Sous firefox 1.5 ça ne marche pas bien... le code redirige vers la page de destination mais plutôt que le message d'attente, j'ai une page blanche.

    des idées?

  • signaler à un administrateur
    Commentaire de laurentwiller le 19/05/2006 13:24:21

    Bonjour,

    J'ai essaye ce code et il fonctionne seulement dans certains navigateurs.
    IE6 = fonctionne
    Firefox = ne fonctionne pas et affiche une page blanche
    Netscape = le message d'attente clignote

    vous avez une idee? Merci.

  • signaler à un administrateur
    Commentaire de Boreux le 22/05/2006 08:57:19

    Sorry, je ne développe que sous IE
    (je n'y ai pas d'action, mais je développe en intranet, dans ma société, qui ne supporte QUE IE)

    Je fais dont part de mes idées de temps en temps, reste à corriger pour les autres browser

  • signaler à un administrateur
    Commentaire de Chrigou le 17/04/2007 08:20:45

    Effectivement, je confirme que sous Firefox ça affiche una page blanche. J'ai fait une petite modif et ça à l'air de fonctionner maintenant. Il faut remplacer la partie HTML par celle-ci:
    (en fait j'ai mis l'appel du formulaire dans la balise BODY)

    <html>
    <head>
    <title>Please Wait...</title>
    </head>
    <body onload="document.WAIT_go.submit();">
    <TABLE BORDER=0 align="center" height="100%">
        <tr>
            <td height="100%" valign="middle">
                <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=1 Class="Table" width="250" height="1">
                    <TR Class="Table_Titre"><td Class="Table_Titre" align="center"><b>Chargement en cours</b></td></TR>
                    <TR Class="Table_SSTitre"><td Class="Table_SSTitre" align="center"><br>&nbsp;<br>Veuillez patienter...<br>&nbsp;</td></TR>
                </table>
            </td>
        </tr>
    </TABLE>
    <div style="visibility:hidden">
        <form name="WAIT_go" method="post" action="http://<%=request.servervariables("SERVER_NAME")%><%=Request.ServerVariables("PATH_INFO")%><%if Request.ServerVariables("QUERY_STRING") <>"" then%>?<%=Request.ServerVariables("QUERY_STRING")%><%end if%>">
    <%
        For Each item In Request.Form
            Response.Write "<input type='hidden' name='" & item & "' value='" & Request.Form(item) & "'>"
        Next  %>
        </form>
    </div>
    </body>
    </html>

  • signaler à un administrateur
    Commentaire de chalet_a_biot le 09/05/2007 23:38:19

    Bonjour,

    Je souhaitais utiliser ce code, à partir de pages PHP.
    J'ai fais un test cela ne fonctionne pas.

    Est-ce que vous avez une astuce ?
    Ou est-ce que vous avez une autre solution ?

    Merci d'avance.

  • signaler à un administrateur
    Commentaire de juju 92 le 24/05/2007 17:41:29

    Bonjour,

    Désolé d'apporter une touche négative à ce concert de louanges (car c'est assez pratique) mais je souhaite vous mettre en garde parce que j'ai passé une journée à résoudre un pb qui venait de l'inclusion du fichier wait.asp....alors si ça peut servir à d'autres pour résoudre le problème.

    Mon site (ASP) récupère en POST différentes valeur de formulaire afin de les insérer dans une base de données(classique quoi). Certaines sont de type texte et peuvent contenir des simples quotes. Le traitement classique est de récupérer la valeur avec Request.Form et par exemple de doubler les simples quotes avant insertion en base.

    Pour une raison obscure(plus maintenant), l'insertion du fichier wait.asp, me retourne des valeur de champ text incomplètes tronquées avant la simple quote...et là pour trouver, j'aime mieux vous dire que je me suis tellemment arraché de cheveux que Barthez n'a qu'à bien se tenir.

    En fait je pense que lorsque les paramètres sont recréés dans wait.asp, la partie de champs situé après les simples quote passent à la trape. J'ai pas eu vraiment le temps de m'attarder sur le problème, un jour viendra....

    Bien sûr j'effectue une modification des simples quotes côté client (javascript), mais en cas de désactivation Javascript .....

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS