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 :

[DOM] Extraire les variables de plusieurs listes déroulantes


Sujet :

JavaScript

  1. #1
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut [DOM] Extraire les variables de plusieurs listes déroulantes
    Salut à tous,
    j'ai le script suivant implémenter avec le PHP:
    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
     
    ////// SCRIPT //////////
    echo '<script type="text/javascript">';
    echo 'function verifier() {';
    echo 'nb_ligne	 =	document.note.critere.value ';
    echo 'cmp	 =	0 ';
    echo 'erreur	 =	"" ';
     
    //echo 'for (cmp=0 ; cmp<nb_ligne ; cmp++ ){' ;
    echo 	"if ((document.note.getElementById('choix.'cmp'').value)=='0')){";
    echo 	'erreur	 +=	"_ la rubrique\n"';
    echo 	'alert	("Vous n avez pas indiqué :\n" + erreur);';
    echo 	' </script>';
    //echo ' } ';
     
     
    ////// SCRIPT //////////
    avec le form suivant:
    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
     
    <form method="post" name="note" onsubmit="verifier()">
    <?
    /// Instanciation	
     
    	echo '<center><table border="1">';
        	echo '<caption><font size="1" face="Verdana" color="#041f2e"><b>Evaluation du '.$nom.' *</b></font></caption>'; ?>
     
    	<? while(!$crit->eof){					
    			?>
    	<tr>
          		 <td>
        			<? echo '<font size="2" face="Verdana" color="#041f2e">'.$crit->critere.'</font>' ; ?>   
         		 </td>
     
          		<td valign="middle">
     
        		<select name="<? echo 'choix'.$i ;?>" >
                	<option value="0" selected>-------Select-------</option>
                	<option value="1">Médiocre</option>
                    <option value="2">Mauvais</option>
                    <option value="3">Moyen</option>
                    <option value="4">Bon</option>
                    <option value="5">Excellent</option>
     
               </select>  
                <input type="hidden" name="critere" value='<? echo $i ;?>' >
     
          		</td>
    	</tr>  
    <?
    $i++;
    $crit->Movenext();
    }?>
     
    <? echo '</table></center>'; ?>
    <input type="hidden" name="css" value="1" >
    <? echo '<br>' ;?>
    <center><input type="submit" value="Valider" ></center>
    </form>
    C'est un code qui permet de générer des listes déroulantes selon le nb de critères que j'ai dans ma base de données SQL.... Et je génère les listes déroulantes dynamiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="<? echo 'choix'.$i ;?>" >
    . Alors, j'ai voulu faire une méthode vérifier() qui permet de vérifier si l'internaute a vraiment choisis un choix parmis ceux qui existent dans la liste déroulante , mais j'ai pas su comment récupérer les choix aprés avoir valider le formulaire...
    Je me demande est ce quelqu'un possède une idée comment ça se fait...
    J'ai même consulter le sujet:http://www.developpez.net/forums/sho...d.php?t=520673 sans aucune résultat.
    Merci pour votre aide

  2. #2
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo 'function verifier() {';
    echo 	"return (document.getElementById('cmp').value=='0');";
    echo 	'}';
    Attention : je connais pas PHP
    Par contre il faudrait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="<? echo 'choix'.$i ;?>" id="cmp">
    A+

  3. #3
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut
    Je pense que votre idée n'est pas correcte car j'ai plusieurs listes déroulantes et le cmp est une variable que je l'utilise dans ma boucle for......

    Le pb içi c'est obtenir l'analogie de $_POST en JavaScript, et par la suite dégager la valeur choisie de chaque liste déroulante....

  4. #4
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Si je peux me permettre d'apporter une petite précision ?:

    Une fois cette modif conseillée par e.Bzz faite, afin de définir l'ID de ta liste déroulante.
    <select name="<? echo 'choix'.$i ;?>" id="cmp">
    Je pense qu'il faudrait remplacer la ligne suivante:
    echo "if ((document.note.getElementById('choix.'cmp'').value)=='0')){";
    par:
    echo "if ((document.note.getElementById(cmp).value)=='0')){";

  5. #5
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    j'étais en train de répondre en même temps que toi, je viens juste de voir ta réponse.

    Pour ce qui est de la variable cmp, tu l'initialise à Zéro en entrant dans ta procédure, comment veux tu pouvoir gérer plusieurs listes déroulant alors ?

    Il te faut scanner les listes déroulantes de ton objet DOM document.form.

  6. #6
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo 'function verifier(id_liste) {';
    echo 	"return (document.getElementById(id_liste).selectedIndex);";
    echo 	'}';
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="<? echo 'choix'.$i ;?>" id="cmp_<? echo 'choix'.$i ;?>">
    et l'appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     onsubmit="return verifier('cmp_<? echo 'choix'.$i ;?>')"
    En supposant que chaque liste est dans un <form> différent (sinon, il nous manque des éléments )

    Remarque : ceci en supposant que tes valeurs par défaut sont bien en 1° position de chaque liste ...

    A+

  7. #7
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut

    Toujours pas d'alert, j'ai pas obtenu le résultat voulu....
    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
     
    ////// SCRIPT //////////
    echo '<script type="text/javascript">';
    echo 'var jourMod="0"';
    echo 'function verifier(id_liste) {';
    echo 'nb_ligne	 =	document.note.critere.value ';
    echo 'jourMod = note[note.selectedIndex].value';
    echo 	'alert	("res:\n" + jourMod);';
    echo 'cmp	 =	0 ';
    echo 'erreur	 =	"" ';
     
    //echo 'for (cmp=0 ; cmp<nb_ligne ; cmp++ ){' ;
    echo 	"if ((document.getElementById(id_liste).selectedIndex)==1){";
    echo 	'erreur	 +=	"_ la rubrique\n"';
    echo 	'alert	("Vous n avez pas indiqué :\n" + erreur);';
    echo 	' </script>';
    //echo ' } ';
     
    ////// SCRIPT //////////
    et voiçi mon forme:
    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
     
    <form method="post" name="note" onsubmit="return verifier('cmp_<? echo 'choix'.$i ;?>')">
    <?
    /// Instanciation	
     
    	echo '<center><table border="1">';
        	echo '<caption><font size="1" face="Verdana" color="#041f2e"><b>Evaluation du '.$nom.' *</b></font></caption>'; ?>
     
    	<? while(!$crit->eof){					
    			?>
    	<tr>
          		 <td>
        			<? echo '<font size="2" face="Verdana" color="#041f2e">'.$crit->critere.'</font>' ; ?>   
         		 </td>
     
          		<td valign="middle">
     
        		<select name="<? echo 'choix'.$i ;?>" id="cmp_<? echo 'choix'.$i ;?>">
                	<option value="1" selected>-------Select-------</option>
                	<option value="2">Médiocre</option>
                    <option value="3">Mauvais</option>
                    <option value="4">Moyen</option>
                    <option value="5">Bon</option>
                    <option value="6">Excellent</option>
     
               </select>  
                <input type="hidden" name="critere" value='<? echo $i ;?>' >
     
          		</td>
    	</tr>  
    <?
    $i++;
    $crit->Movenext();
    }?>
     
    <? echo '</table></center>'; ?>
    <input type="hidden" name="css" value="1" >
    <? echo '<br>' ;?>
    <center><input type="submit" value="Valider" ></center>
    </form>
    SOS

  8. #8
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par L'aigle de Carthage Voir le message
    Toujours pas d'alert, j'ai pas obtenu le résultat voulu....
    Normal, ce n'est pas la fonction fournie (qui supprimait toutes les erreurs de la tienne)

    Un rappel : ma "syntaxe PHP" est à vérifier

    A+

  9. #9
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut
    bhein, j'ai corrigé mon onsubmit.. et c'est toujours fautux

  10. #10
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par L'aigle de Carthage Voir le message
    bhein, j'ai corrigé mon onsubmit.. et c'est toujours fautux


    Y'avait pas vraiment que ça

    A+

  11. #11
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut
    Juste une remarque:
    J'ai plusieurs listes déroulantes, genre :

    critère 1 : Une liste déroulante
    critère 2 : Une autre liste déroulante
    critère 3 : une autre liste
    ....

    et je veut récupérer une valeur de chaque liste
    J'espère que vous m'avez compris...

  12. #12
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par L'aigle de Carthage Voir le message
    Juste une remarque:
    J'ai plusieurs listes déroulantes, genre :

    critère 1 : Une liste déroulante
    critère 2 : Une autre liste déroulante
    critère 3 : une autre liste
    ....

    et je veut récupérer une valeur de chaque liste
    J'espère que vous m'avez compris...
    D'où le paramètre de la fonction.
    Tu ferais bien de tout relire à tête reposée

  13. #13
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut
    Salut,
    J'ai opté pour une méthode de travail avec les value et pas avec les id:
    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
     
    <form method="post" name="note" onsubmit="verifier()" >
    <?
    // Instanciation	
     
    	echo '<center><table border="1">';
        	echo '<caption><font size="1" face="Verdana" color="#041f2e"><b>Evaluation du '.$nom.' *</b></font></caption>'; ?>
     
    	<? while(!$crit->eof){					
    			?>
    	<tr>
          		 <td>
        			<? echo '<font size="2" face="Verdana" color="#041f2e">'.$crit->critere.'</font>' ; ?>   
         		 </td>
     
          		<td valign="middle">
     
        		<select name="<? echo 'choix'.$i ;?>" >
                	<option value="0" selected>-------Select-------</option>
                	<option value="1">Médiocre</option>
                    <option value="2">Mauvais</option>
                    <option value="3">Moyen</option>
                    <option value="4">Bon</option>
                    <option value="5">Excellent</option>
     
               </select>  
                <input type="hidden" name="<? echo'critere'.$i ;?>" value='<? echo $i ;?>'  >
     
          		</td>
    	</tr>  
    <?
     
    $i++;
    $crit->Movenext();
    }
    ?>
    <input type="hidden" name="nombre" value='<? echo $i ;?>'  >
    <? // champ nombre qui est hidden pour déterminé le nombre de criteres ?>
    <? echo '</table></center>'; ?>
    <input type="hidden" name="css" value="1" >
    <? echo '<br>' ;?>
    <center><input type="submit" value="Valider" ></center>
    </form>
    Mais le pb c'est dans la fonction javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <script type="text/javascript">
    var jourMod="0";
    var nb_ligne="";
    function verifier() {
    alert ("Bonjour");
    nb_ligne=document.note.nombre.value;
    alert (nb_ligne);
    for (cmp=0 ; cmp<nb_ligne ; cmp++ ){
    alert (cmp);
    }
    j'ai pas su extraire le choix effectué pour chaque critère... Je cherche la syntaxe que je dois la mettre ....

  14. #14
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par L'aigle de Carthage Voir le message
    Salut,
    J'ai opté pour une méthode de travail avec les value et pas avec les id

    ...

    j'ai pas su extraire le choix effectué pour chaque critère... Je cherche la syntaxe que je dois la mettre ....
    Etonnamment, la syntaxe requise utilise ... les ID

  15. #15
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut
    Bon...
    J'ai inclu les id dans mon code.
    Voiçi le script:
    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
     
    <script type="text/javascript">
    var nb_ligne="";
    var erreur="";
    function verifier(id_liste) {
    alert ("Bonjour");
    nb_ligne=document.note.nombre.value;
    alert (nb_ligne);
    if (document.getElementById(id_liste).selectedIndex==0) {
    erreur	 =	"Votre évaluation est incomplète\n";
    alert	(erreur);
    return false;
    };
    };
    </script>
    et voiçi mon formulaire:
    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
     
    <form method="post" name="note" onsubmit="return verifier('cmp_<? echo 'choix'.$i ;?>')" >
    <?
    /// Instanciation	
     
    	echo '<center><table border="1">';
        	echo '<caption><font size="1" face="Verdana" color="#041f2e"><b>Evaluation du '.$nom.' *</b></font></caption>'; ?>
     
    	<? while(!$crit->eof){					
    			?>
    	<tr>
          		 <td>
        			<? echo '<font size="2" face="Verdana" color="#041f2e">'.$crit->critere.'</font>' ; ?>   
         		 </td>
     
          		<td valign="middle">
     
        		<select name="<? echo 'choix'.$i ;?>" id="cmp_<? echo 'choix'.$i ;?>">
                	<option value="0" selected>-------Select-------</option>
                	<option value="1">Médiocre</option>
                    <option value="2">Mauvais</option>
                    <option value="3">Moyen</option>
                    <option value="4">Bon</option>
                    <option value="5">Excellent</option>
     
               </select>  
                <input type="hidden" name="<? echo'critere'.$i ;?>" value='<? echo $i ;?>'  >
     
          		</td>
    	</tr>  
    <?
    $i++;
    $crit->Movenext();
    }
    ?>
    <input type="hidden" name="nombre" value='<? echo $i ;?>'  >
    <? echo '</table></center>'; ?>
    <input type="hidden" name="css" value="1" >
    <? echo '<br>' ;?>
    <center><input type="submit" value="Valider" ></center>
    </form>
    et la fonction fonctionne .... mais le message d'erreur de erreur = "Votre évaluation est incomplète\n"; ne s'affcihe que si je ne met pas un choix dans la première liste déroulante, c'est à dire si je met un choix pour la première liste et pour la troisième liste mais je laisse la deuxième liste sans choix, rien ne s'affcihe...

Discussions similaires

  1. [MySQL] extraire le choix dans un variable d'une liste déroulante mysql en php
    Par guytibo dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 13/12/2010, 19h17
  2. [AC-2007] plusieurs Liste déroulante dépendante les une des autres
    Par nabilophone11 dans le forum IHM
    Réponses: 12
    Dernier message: 12/12/2010, 13h59
  3. Réponses: 2
    Dernier message: 06/11/2009, 15h14
  4. Réponses: 8
    Dernier message: 27/02/2008, 10h20
  5. Tester les valeur d'une liste déroulante
    Par st0nky dans le forum Langage
    Réponses: 1
    Dernier message: 04/12/2005, 14h52

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