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 :

probleme de syntaxe et boucle while


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 46
    Points : 29
    Points
    29
    Par défaut probleme de syntaxe et boucle while
    Bonjour, j'ai un probleme sur une fonction javascript. il doit y avoir un probleme de syntaxe que je ne comprend pas. Le but de la fonction est de rediriger vers une page en passant une série de parametres.

    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
     
    function valideGenre(page, nombre) {
     
     var lien="";
     
    	 lien="document.location.href=page+'?idcategorie='+document.getElementById('categorie').options[document.getElementById('categorie').selectedIndex].value";
     
     
     if (document.getElementById('nbgenre').value != "") {
     
    	var	nbgenres = parseInt(nombre)+1;
    	lien += "+'&nbgenre='+nbgenres";
     
    	var i=1;
     
            //boucle
            while (i < nbgenres) {
    	    var namegenre= "genre"+i+"";
    	    var namegenre2= "&genre"+i+"";	lien+="+namegenre2+'='+document.getElementById(namegenre).value";
    	i++;
     
    	}
    	lien+="+'&genre'+i+'='+document.getElementById('genre').options[document.getElementById('genre').selectedIndex].value";
    	eval(lien);
     }
    }
    Donc quand nombre=1, pas de probleme, le lien est bien: page.php?idcacegorie=1&nbgenre=1&genre1=1 et l'on ne passe pas dans la boucle while.

    quand nombre= 2, pas de probleme. on passe dans la boucle while puis dans l'instruction après la boucle.
    le lien est: page.php?idcategorie=1&nbgenre=2&genre1=2&genre2=4

    par contre quand nombre =3, j'obtiens

    page.php?idcategorie=1&nbgenre=3&genre2=4&genre2=4&genre3=3

    donc j'ai un "genre2" au lieu d'un "genre1".
    Je ne vois pas pourquoi ma boucle while ne fonctionne pas bien.

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    bon je l'ai simplifiée pour la tester et la ça marche
    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
    <script type='text/javascript'>
    function valideGenre(page, nombre) {
     
     var lien=page+'?idcategorie=1';
     
     
     
     
       var   nbgenres = parseInt(nombre)+1;
       lien += '&nbgenre='+nbgenres;
     
       var i=1;
     
            //boucle
            while (i < nbgenres) {
           var namegenre= "genre"+i;
           var namegenre2= "&genre"+i;   
           lien+=namegenre2+'=3';
       i++;
     
       }
       lien+='&genre'+i+'=36';
     
     
     alert(lien);
    }
    valideGenre('toto',3);
    </script>

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 46
    Points : 29
    Points
    29
    Par défaut
    merci à toi,

    je vais tester et te tiens au courant.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 46
    Points : 29
    Points
    29
    Par défaut
    j'ai un souci car avec un "alert", lien est bon avec des corrections comme ce que tu as mis mais le probleme est que par contre le lien est incomplet.
    Ca s'arrete à:

    http://totalmanga.com/pub/backoffice2/fiches_ajout.php?idcategorie=&idtypefiche=&idetatfiche=&note=0&titreeurop=&titreorig=&motcle=&idage=&idsupport=&idgroupe=&idgenre=2&idpro=&idrolepro=

    et je devrais avoir http://totalmanga.com/pub/backoffice2/fiches_ajout.php?idcategorie=&idtypefiche=&idetatfiche=&note=0&titreeurop=&titreorig=&motcle=&idage=&idsupport=&idgroupe=&idgenre=2&idpro=&idrolepro=&nbgenre=1&genre1=3 par exemple.

    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
     
    function valideGenre(page, nombre) {
    	var lien="";
     
    	lien =document.location.href=page+'?idcategorie='+
                 document.getElementById('categorie').options[document.getElementById('categorie').selectedIndex].value+
                          '&idtypefiche='+form_ajout.type_fiche.options[form_ajout.type_fiche.selectedIndex].value+
    '&idetatfiche='+form_ajout.etat_fiche.options[form_ajout.etat_fiche.selectedIndex].value+
    '&note='+form_ajout.note.options[form_ajout.note.selectedIndex].value+'&titreeurop='+
    form_ajout.titre_europ.value+'&titreorig='+form_ajout.titre_orig.value+'&motcle='+
    form_ajout.mot_cle.value+'&idage='+form_ajout.age.options[form_ajout.age.selectedIndex].value+
    '&idsupport='+form_ajout.support.options[form_ajout.support.selectedIndex].value+'&idgroupe='+
    form_ajout.groupe.options[form_ajout.groupe.selectedIndex].value+'&idgenre='+
    form_ajout.genre.options[form_ajout.genre.selectedIndex].value+'&idpro='+
    form_ajout.pro.options[form_ajout.pro.selectedIndex].value+'&idrolepro='+
    form_ajout.rolepro.options[form_ajout.rolepro.selectedIndex].value;
     
    	if (document.getElementById('nbgenre').value != "") {
     
    		var	nbgenres = parseInt(nombre)+1;
     
    		lien += '&nbgenre='+nbgenres;
     
    		var i=1;
     
    		while (i < nbgenres) {
     
    			var namegenre= "genre"+i;
    			var namegenre2= "&genre"+i;
     
    			lien +=namegenre2+'='+document.getElementById(namegenre).value;
    			i++;
    		}
    		lien +='&genre'+i+'='+document.getElementById('genre').options[document.getElementById('genre').selectedIndex].value;
     
    		eval(lien);
    	}
     
    }
     
    merci d'avance.

  5. #5
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    qu est ce que tu veux faire exactement ?
    Car faire un lien comme ça .....

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 46
    Points : 29
    Points
    29
    Par défaut
    en fait c'est pour interagir avec du php.

    dans un formulaire j'ai une liste select et le but est de pouvoir créer des balises hidden (genre1, genre2, ...) à chaque fois qu'un chositi un élement dans la liste. Je veux faire ca car je souhaite éviter l'utilisation d'une liste à choix multiple. J'espere que mon explication est compréhensibe.

  7. #7
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    hum, je pense que ce sera plus simple de faire des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    inp = document.createElement("input");
    inp.type = "hidden";
    inp.name = "....";
    ....
    document.getElementById('id_du_form').appendChild(inp);

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 46
    Points : 29
    Points
    29
    Par défaut
    ok merci, je vais tenter, mais ne vois-tu pas pourquoi ce que j'ai fais avant ne fonctionne pas, sachant que quand je fais un alert(lien) la réponse est correcte mais le lien est de la page rechargée est incomplet.

    merci

  9. #9
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ben c est peut etre tout simplement trop long ?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 46
    Points : 29
    Points
    29
    Par défaut
    je ne pense pas car quand je réduis la taille de la 1ere partie du lien ca fait la meme chose.

  11. #11
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ca doit etre du a ton eval,
    toute manière j'aime pas eval berk

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 46
    Points : 29
    Points
    29
    Par défaut
    je peux utliser quoi en remplacement d'eval ?

  13. #13
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    les createElement, appendChild .... le dom quoi

    tu construit un fomulaire et tu le post, car c'est en gros ce que tu veux faire non ?

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 46
    Points : 29
    Points
    29
    Par défaut
    c bon, j'ai trouvé, j'ai fait un document.location.href=lien; en supprimant le le document.location.href du début.

    c'est eval qui posait bien probleme.

    merci de ton aide et pour ta patience!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. boucle while, precision syntaxe
    Par S2S dans le forum C++
    Réponses: 17
    Dernier message: 28/06/2007, 16h31
  2. [MySQL] Probleme UPDATE avec boucle WHILE
    Par iverson_mac dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/06/2007, 17h07
  3. boucles while/for : syntaxe incompréhensible
    Par Loceka dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 14/12/2006, 21h04
  4. Réponses: 2
    Dernier message: 19/11/2006, 10h54
  5. Réponses: 13
    Dernier message: 20/03/2006, 16h26

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