IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

onload en boucle


Sujet :

JavaScript

  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut onload en boucle
    Bonjour,

    J'utilise THELIA (solution ecommerce)

    Dans une commande.html
    il faut rentrer le code promo puis faire un submit
    pour que le client puisse voir sa promo affichee.

    Ce que je souhaite faire c'est passer directement le code promo pour que le client n'ai pas a le rentrer ni a le submit.
    Cela "fonctionne",
    notament avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="document.formulaire.submit();">
    faisant reference au form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form action="commande.php?action=codepromo&amp;code=#CLIENT_EMAIL" name="formulaire" method="get" id="formulaire" >
    <input type="hidden" name="action" value="codepromo" />
    <input name="code" type="hidden" id="code"  value="#CLIENT_EMAIL"/>
    Le probleme c'est que mon onload tourne en boucle...

    J'ai essaye de rajouter a la suite un break:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="document.formulaire.submit();break;">
    ou un exit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="document.formulaire.submit();exit;">
    les 2 arretent le onload mais j'obtiens des erreurs de syntaxe: unlabeled break must be inside loop or switch
    j'ai rajoute des parentheses mais cela n'a rien solutionne...

    J'essaie sans succes pour l'instant(depuis 3 jours, je ne suis pas tres malin ) de finaliser ce "tout petit" probleme
    mais la j'avoue que mes nerfs commencent a lacher...
    Une aide serait la bien venue.
    Merci.

    Reg

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    il te suffit d'ajouter un paramètre dans l'url appelée par l'utilisateur.
    Dans ta page, si tu trouves le paramètre ( = si il est renseigné), tu déclenches le onload ( => submit ), sinon tu ne le déclenches pas.

    Comme tu n'auras pas répercuter ce paramètre dans ton formulaire, le submit auto ne devrait avoir lieu qu'une fois.

    Ça correspond ?

    A+

  3. #3
    Membre averti
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut
    Bonjour E.Bzz,

    J'ai un doute sur le code que tu me propose de mettre en place...
    si c'est par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="document.formulaire.submit();code.value='#CLIENT_EMAIL';">
    Cela n'arrete pas le onload...
    Mais je crois surtout que je n'ai pas bien saisi ce que tu proposais...

    Reg

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par regis3 Voir le message
    Mais je crois surtout que je n'ai pas bien saisi ce que tu proposais...
    Exact

    Je te proposais de mettre en place une url "utilisateur" (celle sur laquelle il cliquera pour accéder à la page) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ta_page.php?param1=p1&param2=p2&reload=1
    Ce paramètre "reload" n'étant défini qu'à cet endroit.

    Ensuite, dans ta page, tu testes si ta variable d'url "reload" est = '1'
    (désolé j'ai pas la syntaxe PHP )
    Si il est = '1' , tu génères ton onload qui fait le submit auto.
    Sinon, tu ne le génères pas.

    Lors du submit auto, comme ton <form> ne va pas renvoyer ce paramètre "reload", tu le détecteras, ne re-génèreras pas le onload, et donc le submit auto n'aura pas lieu une seconde fois.

    La boucle est ... cassée

    A+

  5. #5
    Membre averti
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut
    Bonjour,

    Mon client arrive par une page connexion qui renvoie sur une commande.php qui elle renvoie sur une commande.html
    En fait la bonne page pour mes besoins serait:
    commande.php?action=codepromo&code=client@yahoo.fr

    client@yahoo.fr est renvoye par le form dans la page commande.html a la place de: value="#CLIENT_EMAIL"

    Lorsque j'arrive j'ai une page:
    commande.php?action=codepromo&code=
    sans la valeur du code
    c'est pour cela que je suis oblige de passer par un faux submit lors de onload.

    Pourriez vous me repreciser votre idee de facon plus concrete
    Merci.

    Ce matin apres un autre essai infructueux j'ai plante THELIA, je vais sans doute etre oblige de reinstaller l'application

    Mais des que c'est fait j'essairais votre proposition(redetaillee...)

    Regis3

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Salut,

    Le principe est assez simple, ton code pose un problème, car au chargement de la page, tu soumets automatiquement ton formulaire, donc la page se recharge, donc tu resoumets ton formulaire, la page se recharge etc.

    La solution que te propose E.Bzz est d'ajouter un paramètre à l'URL au premier submit, ce paramètre, dont tu testeras l'existence au chargement (voir comment le récupérer ici) ce qui te permettras de savoir si ton formulaire a déjà été soumis
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre averti
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut
    Bonjour Bovino,

    Pour l'onload qui tourne en boucle, j'ai bien compris pourquoi

    Par contre pour le comment...J'ai suivi le lien, mais je crois bien que je n'ai pas encore bien saisi
    pour adapter a mon besoin, j'ai modifie...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <script type="text/javascript">
     var code=new Array();
     var #CLIENT_EMAIL=new Array();
     param = window.location.search.slice(1,window.location.search.length);
     first = param.split("&");
     
     for(i=0;i<first.length;i++){
     second = first[i].split("=");
     code[i] = second[0];
     #CLIENT_EMAIL[i] = second[1];
        }
    </script>
    en gros:
    code remplace nom
    et #CLIENT_EMAIL remplace valeur.

    Du coup je ne sais plus quoi mettre dans mon onload???
    et surtout cela ne "marche" pas...
    Merci.

    regis3

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Heu ... à part le fait que tu récupères des paramètres d'url, je vois pas bien le rapport avec la suggestion

    En fait quand je disais ça, je pensais plutôt à un traitement côté serveur.

    En PHP, ça doit prendre 3 lignes en tout (en comptant la génération du onload)
    Un PHPiste me corrigera me ça devrait ressembler à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <body 
    <?php 
    if ($_GET["reload"] == "1") {
    // echo du onload
    }
    ?>
    >
    A+

  9. #9
    Membre averti
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut
    Merci E.Bzz,

    Ce bout de code ne genere pas d'erreur

    Mais il ne fait pas le boulot, a savoir il ne renvoi pas(submit) l'url
    que je souhaiterais:
    commande.php?action=codepromo&code=client@yahoo.fr
    il doit falloir faire autre chose encore.

    Regis3

  10. #10
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Heu ... je sais pas où tu en est, là, mais ce bout de code était la seule modification de ton script existant dans la solution que je te proposais ....

    Fais la petite modif PHP (tant mieux si la syntaxe était correcte ) dans ton code du 1° post, et appelle ta page avec la bonne url à laquelle tu ajoutes la flag "reload"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commande.php?action=codepromo&code=client@yahoo.fr&reload=1
    Dis-nous (précisément) ce qu'il se passe ...

    A+

  11. #11
    Membre averti
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut
    Alors...

    Si j'ai bien compris
    j'appelle ma page commande depuis ma page panier avec une url
    commande.php?action=codepromo&amp;code=#CLIENT_EMAIL&reload=1

    je mets la meme dans action de mon form

    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <body 
    <?php 
    if ($_GET["reload"] == "1") {
    // echo du onload
    }
    ?>
    >
    C'est bien cela?
    Parce que ca ne marche pas...
    pas d'erreur retournee, mais le submit ne se fait plus
    comme lorsque
    <body onload="document.formulaire.submit();">
    Voila

    Regis3

  12. #12
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    On peut voir la totalité du code ?

    Sinon, tu devrais virer le "#" de l'url (tu l'ajouteras après récupération de la valeur) car la suite des paramètres doit être considérée comme une ancre par le nav' ...

    A+

  13. #13
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Heu ... j'ai un doute d'un coup : tu as bien remplacer par l'instruction PHP qui génère ton onload ?

    A+

  14. #14
    Membre averti
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut
    voici le code de ma page commande.html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    	<title>#VARIABLE(nomsite)</title>
     
    <script src='js/jquery.js' type='text/javascript'></script>
    <script src='js/panier.js' type='text/javascript'></script>
    <link href="styles.css" rel="stylesheet" type="text/css" />
     
    </head>
    <body <?php 
    if ($_GET["reload"] == "1") {
    echo 'bravo';
    }
    ?>>
     
    <div id="wrapper">
    	<div id="subwrapper">
    	#INCLURE "entete.html"
    		<div id="chemin">Vous &ecirc;tes ici :<a href="index.php">Accueil boutique</a> / R&eacute;capitulatif de ma commande</div>
    		#INCLURE"menu.html"
    		<div id="contenu">
    			<div id="etapesDeCommande">
    				<ul>
                        <li><span>1</span>Panier</li>
                        <li><span>2</span>Facturation et livraison</li>
                        <li class="selection"><span class="chiffreSelection">3</span>Je v&eacute;rifie ma commande</li>
                        <li><span>4</span>Paiement s&eacute;curis&eacute;</li>
    				</ul>
    			</div>		 
    			<h2>R&eacute;capitulatif de ma commande </h2>
                <form action="commande.php?action=codepromo&amp;code=#CLIENT_EMAIL" name="formulaire" id="formulaire">
                <input type="hidden" name="action" value="codepromo" />
                <table width="100%" border="0" cellspacing="0" cellpadding="5">
                	<tr>
                		<th colspan="2">Nom de l'article</th>
                		<th align="center">Prix unitaire </th>
               		  <th align="center">Quantit&eacute;</th>
               		  <th align="center">Total</th>
               	  </tr>
                	<THELIA_panier type="PANIER">
                	<tr>
                        <td class="ligne">
                            <THELIA_IMAGE type="IMAGE" num="1" produit="#ID"  largeur="80">
                            <img src="#IMAGE" alt="#PRODTITRE" title="#PRODTITRE"/>
                            </THELIA_IMAGE>
                        </td>
                        <td class="ligne">#TITRE - #REF</td>
                        <td align="center" class="ligne">#PRIXU &euro;</td>
                      <td align="center" class="ligne">#QUANTITE</td>
                      <td align="center" class="ligne">#TOTAL &euro;</td>
                	</tr>
                </THELIA_panier>
                <tr>
                	<th colspan="4">Frais de livraison </th>
                	<th align="center">#PANIER_PORT &euro;</th>
                </tr>
                <tr>
                	<td colspan="4">Remise-avoir </td>
                	<td align="center">#PANIER_REMISE &euro;</td>
                </tr>
                <tr>
    				<th colspan="5">
    				<p class="derniereLigne"><label class="codeDeReduction">Saisissez un code de r&eacute;duction</label>
    				<input name="code" id="code" type="text" value="#CLIENT_EMAIL" class="codeDeReduction"/>
    				<button type="submit" class="boutonMemeLigneQuInput"><span><span>OK</span></span></button>
    				</p>
    				</th>
                </tr>            
                <tr>
                	<th colspan="4">TOTAL</th>
                	<th align="center" class="total">#PANIER_TOTPORT &euro;</th>
                </tr>
                </table>
                </form>
     			<div class="adresseDeLivraisonRecap">				
    				<h3>Mon adresse de livraison</h3>
    				<div class="contenu">
                		<THELIA_adrcours type="ADRESSE" adresse="#ADRESSE_ACTIVE">
                		#RAISON #PRENOM #NOM	<br />
                		#ADRESSE1 #ADRESSE2 #ADRESSE3<br />
                		#CPOSTAL #VILLE<br/>
                		<THELIA_pays type="PAYS" id="#PAYS">
                		#TITRE	
                		</THELIA_pays>
                		</THELIA_adrcours>
    				</div>
    				<a href="#URLPREC" class="modifierOuAjouter">Modifier cette adresse</a>
    			</div>
    		</div>		  	
    		<div id="contenu">
    			<h2>Choisissez un mode de paiement : </h2>
    			<div class="choixDuReglement">
                	<ul>
    					<THELIA_PAIEMENT type="PAIEMENT">
    					<li><a href="virement.php"><span class="modeDeReglement">#TITRE</span><span class="choisir">Je choisis ce mode de paiement</span></a></li>
    				</THELIA_PAIEMENT>
                    </ul>
    			</div>
    		</div>
    		#INCLURE "pied.html"
    		#INCLURE "signature.html"
    	</div>
    </div>
    </body>
    </html>
    et le bout de code de ma page panier.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a class="bouton" href="commande.php?action=codepromo&amp;code=#CLIENT_EMAIL&reload=1"><span><span>Finaliser ma commande</span></span></a>
    Ce n'est que le code "brut" de la nouvelle version de THELIA, je n'ai pas encore reinstalle un version plus personnalisee.

    Merci.

    Regis3

  15. #15
    Membre averti
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut
    le echo 'bravo'
    n'y est pas
    j'ai juste fait un essai pour voir le retour, mais il n'a pas eu lieu, j'ai oublie de l'enlever pour t'envoyer mon code

  16. #16
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Tu peux faire un copié/collé du véritable code (avec le onload) ?

    Et enlever le # de l'url, pour voir ....

    A+

  17. #17
    Membre averti
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut
    Encore merci

    J'ai trouve la solution
    http://<br /> http://www.webtolosa....re&cos=1<br />

    Regis3

  18. #18
    Membre averti
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut
    C'etait trop beau
    ne fonctionne qu'avec IE

    Vais me remettre a ta methode

  19. #19
    Membre averti
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut
    E.Bzz,

    En fait je ne peux pas enlever le # du #CLIENT_EMAIL, car c'est ce qui permet de recuperer l'email du client dans THELIA.

  20. #20
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par regis3 Voir le message
    En fait je ne peux pas enlever le # du #CLIENT_EMAIL, car c'est ce qui permet de recuperer l'email du client dans THELIA.
    Il suffit de le rajouter à réception, dans la nouvelle page ...

    A+

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. onLoad et la boucle for
    Par julienlecaro dans le forum ActionScript 1 & ActionScript 2
    Réponses: 9
    Dernier message: 19/12/2008, 12h08
  3. Onload en boucle?
    Par Micke7 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/02/2008, 11h15
  4. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38
  5. Réponses: 2
    Dernier message: 29/05/2002, 20h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo