Partage
  • Partager sur Facebook
  • Partager sur Twitter

Menus déroulants "combinés"

Je veux que l'un ne fonctionne pas sans l'autre

    4 février 2009 à 12:37:10

    Bonjour,
    j'ai voulu faire deux listes déroulantes et faire que la première ne peux pas fonctionner sans l'autre... C'est dur à expliquer mais bon, voila :

    Vous recherchez une activité dans une commune avoisinante ?<br/>
    	       <select name="commune">
                       <option value="Choisicez">Choisicez une option</option>
                       <option value="x">x</option>
                       <option value="xx">xx</option>
                       <option value="xxx">xxx</option>
                   </select>
    
                   <select name="activité">
                       <option value="Choisicez">Choisicez une option</option>
                       <option value="Hotellerie">Hotellerie</option>
                       <option value="Restauration">Restauration</option>
                       <option value="Activité">Activité touristique/sportive</option>
                   </select>
    


    J'aimerais que le visiteur choisice la commune (rien ne passe encore) puis il choisit l'activité et là sa l'enmene à l'endroit voulu ... Tout ceci fonctionne avec des ancres (que je n'ai pas encore mis...) mais je ne sais pas comment faire ...

    Quelqu'un peux m'aider svp ?

    • Partager sur Facebook
    • Partager sur Twitter
      4 février 2009 à 22:39:14

      Une possibilité serait de caché ta seconde liste déroulante (avec le css : display:none;), et avec un onChange sur ta première liste déroulante, dès qu'il fait un choix, la seconde liste apparaît.

      Ou sinon, je ne comprends pas trop ce que tu veux faire avec une ancre ...
      • Partager sur Facebook
      • Partager sur Twitter
        5 février 2009 à 11:03:13

        Pour info ETRNL-JG, on écrit : "Choisissez" ... ...
        • Partager sur Facebook
        • Partager sur Twitter
          5 février 2009 à 13:21:15

          lol Golmote...

          Pas tout compris The-Chaos...
          Si je reprend ce que tu dis, je dois faire comme sa:
          une seule liste voyante: commune
          le visiteru choisi la commune et une liste déroulante apparait
          il choisi dans cette liste et sa le redirige qqp...

          c'est ça ?

          Par contre comment je fais pour que quand le visiteur choisi l'activité sa mene bien dans la commune qu'il a choisi avant ?
          Tu peux me faire un exemple de code stp ?

          merci :
          • Partager sur Facebook
          • Partager sur Twitter
            5 février 2009 à 13:45:37

            Voici un petit code fait à la va vite (bien sûr) et surement incomplet, mais ça pourra te mettre sur la voix, et te permettre de faire des recherches plus ciblé.


            D'abord dans ton code html, tu ajoutes un ID à ta 2ème liste déroulante, et en plus tu le rends invisble. A ta permiere liste déroulante tu ajoute une fonction javascript qui va afficher la 2eme liste déroulante:

            Vous recherchez une activité dans une commune avoisinante ?<br/>
            	       <select name="commune" onChange="display('2emeListeDeroulante')">
                               <option value="Choisicez">Choisicez une option</option>
                               <option value="x">x</option>
                               <option value="xx">xx</option>
                               <option value="xxx">xxx</option>
                           </select>
            
                           <select name="activité" id="2emeListeDeroulante" style="display:none;">
                               <option value="Choisicez">Choisicez une option</option>
                               <option value="Hotellerie">Hotellerie</option>
                               <option value="Restauration">Restauration</option>
                               <option value="Activité">Activité touristique/sportive</option>
                           </select>
            


            Et ton code javascript pour faire apparaître la seconde liste sera :
            function display(id) {
            	
               var elem = document.getElementById(id);
               if (!elem) return;
               if (elem.style.display == 'none') 
               {
            	elem.style.display = 'block';
               } 
            	
            }
            


            Ainsi lorsque l'utilisateur choisira une commune, la seconde liste déroulante apparaîtra.


            Si tu veux que l'utilisateur soit redirigé sur une autre page directement après qu'il ait choisis l'option dans la 2ème liste déroulante, je vois 2 façon de faire:

            Soit envoyer le formulaire via la fonction submit() (fait une recherche) de javascript en l'activant avec un onChange sur la 2ème liste déroulante, soit toujours avec le javascript tu récupères les 2 valeurs sélectionnées dans les 2 listes déroulantes, que tu ajoutes dans l'adresse url via la technique de $_GET. ;)
            • Partager sur Facebook
            • Partager sur Twitter
              5 février 2009 à 14:20:39

              Merci :)
              Mais heu ...
              comment je fais pour mettre le javascript ?

              Tu peux m'epliquer cette partie stp, comment je dois faire ?:
              **toujours avec le javascript tu récupères les 2 valeurs sélectionnées dans les 2 listes déroulantes, que tu ajoutes dans l'adresse url via la technique de $_GET.**
              • Partager sur Facebook
              • Partager sur Twitter
                5 février 2009 à 15:06:00

                Tu as déjà touché un peu au javascript ?

                A peu de chose près, tu mets du javascript comme tu mets du CSS :
                -Soit directement dans le HTML (seulement si c'est hyper cours, c'est pas le cas ici),
                -Soit dans le head via la balise <script></script>
                -Soit via un fichier .js (le mieux) appelé dans le head

                Voir ce tuto !


                Ou sinon pour récupérer les valeurs de tes liste déroulante dans des variables javascript, tu peux utiliser la fonction :
                function Lien(id) {
                	i = document.getElementById(id).selectedIndex; // récupère l'index du choix effectué dans la liste déroulante ayant comme id la valeur de la var id
                	if (i == 0) return;
                	url = document.getElementById(id).options[i].value; // récupère la valeur du select ayant comme id la valeur de la variable id
                	parent.location.href = url;
                }
                


                Néanmoins, ce code n'est pas adapté pour ton code. En effet, celui-ci ne concerne que une seule liste déroulante, qui contiendrait dans la valeur directement l'url ou tu veux te rendre, ce qui n'est pas tout à fait le cas chez toi. Tu devrais pouvoir l'adapter sans trop de difficulté !




                • Partager sur Facebook
                • Partager sur Twitter
                  5 février 2009 à 15:17:46

                  Jamais touché au java script :-°

                  **
                  -Soit dans le head via la balise <script></script>
                  **

                  Je pense que je vais utiliser la balise <script></script> dans mon code mais apres quand tu dis :

                  **
                  Ou sinon pour récupérer les valeurs de tes liste déroulante dans des variables javascript, tu peux utiliser la fonction :...
                  **

                  Sa veux dire que je peux pas prendre ton code et le placer dans ma balise ??
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 février 2009 à 15:29:56

                    Non tu peux pas ! Il me semblait bien que tu copiais colle comme ça ;-)

                    Je t'ai mise une fonction que moi j'utilisais, mais qui récupérait la valeur d'une seule liste déroulante. Or toi tu as 2 listes déroulantes.

                    Ce que tu dois faire, c'est une fonction lien un peu différente de la mienne.

                    Dedans tu vas chercher les valeurs de tes 2 listes déroulantes comme je l'ai fais ici :
                    i = document.getElementById(id).selectedIndex;
                    if (i == 0) return;
                    valeurSelect = document.getElementById(id).options[i].value;

                    ou dans un premier temps id est remplacer par l'id de ta 1er liste déroulante, et dans 1 2eme temps id est remplacer par l'id de ta 2eme liste déroulante.

                    Ensuite pour envoyer l'utilisateur sur la page adéquate tu utilises :
                    parent.location.href = url;

                    où la variable URL contiendra l'url de ta page créé ainsi,
                    var url = 'http://_mon_site_/index.php?commune='+ valeurSelect1+'&secondeListe='+ valeurSelect2;


                    Le + est pour concaténer, comme le . pour le php !
                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 février 2009 à 15:39:53

                      function Lien(id)
                      {
                      i = document.getElementById('2emeListeDeroulante').selectedIndex;
                      if (i == 0) return;
                      url = document.getElementById('2emeListeDeroulante').options[i].value;
                      parent.location.href = "#mon_ancre" ;
                      }

                      Je pense que j'ai rien compris ...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 février 2009 à 15:59:01

                        En effet tu as rien compris ! Ou plutôt tu n'as pas essayé de comprendre...

                        As-tu déjà fais du php ? Si ce n'est le cas, je comprends que tu comprennes rien, ou sinon c'est que tu attends que je te files la réponse, car c'est vraiment pas très compliqué à comprendre! :-°
                        function Lien() // pas besoin d'attribut id, vu que c'est pas une fonction général, l'id tu pourras directement le mettre dans ta fonction
                        {
                        //cherche la valeur de la 1er liste déroulante
                        i = document.getElementById('1erListeDeroulante').selectedIndex; 
                        if (i == 0) return;
                        valeurSelect1 = document.getElementById('1erListeDeroulante').options[i].value; 
                        //cherche la valeur de la 2eme liste déroulante
                        i = document.getElementById('2emeListeDeroulante').selectedIndex; 
                        if (i == 0) return;
                        valeurSelect2 = document.getElementById('2emeListeDeroulante').options[i].value; 
                        // on envoie l'utilisateur sur la page désiré avec les info commune et activité en $_GET
                        parent.location.href = 'http://monsite.com/index.php?commune='+valeurSelect1+'&activite='+valeurSelect2;
                        }
                        


                        Voilà, ça devrait fonctionner normalement ...

                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 février 2009 à 16:06:51

                          C'est bon !!
                          J'ai compris ! Et non, j'attend pas que ça se passe ...
                          Mais heu ... quand tu met retun, ça sert à quoi ?
                          Et pour le PHP ... je sais lire, modifier/corriger à ma guise, mais ecrire... pas trop nan ...
                          • Partager sur Facebook
                          • Partager sur Twitter
                            5 février 2009 à 16:18:11

                            Il n'y a pas de return ici ...

                            Le return il retourne une valeur (à afficher, utiliser), dans ce cas si, la fonction t'envoie sur une autre page, donc il y a rien a retourner sur la page actuel ;-).
                            • Partager sur Facebook
                            • Partager sur Twitter
                              5 février 2009 à 16:22:36

                              Image utilisateur

                              :)
                              Merci pour ton aide
                              Je fais mon code et le collerais ici pour que tu me dise si j'ai enfin tout compris mdr...

                              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                              édité:
                              heu ...
                              <select name="commune" onChange="display('2emeListeDeroulante')">
                                                 <option value="Choisicez">Choisissez une option</option>
                                                 <option value="x">x</option>
                                                 <option value="xx">xx</option>
                                                 <option value="xxx">xxx</option>
                                             </select>
                              
                                             <select name="activité" id="2emeListeDeroulante" style="display:none;">
                                                 <option value="Choisissez">Choisissez une option</option>
                                                 <option value="Hotellerie">Hotellerie</option>
                                                 <option value="Restauration">Restauration</option>
                                                 <option value="Activité">Activité touristique/sportive</option>
                                             </select>
                              
                              
                              			   <script type="text/javascript">
                              
                              			   function Lien() // pas besoin d'attribut id, vu que c'est pas une fonction général, l'id tu pourras directement le mettre dans ta fonction
                              {
                              //cherche la valeur de la 1er liste déroulante
                              i = document.getElementById('1erListeDeroulante').selectedIndex; 
                              if (i == 0) return;
                              valeurSelect1 = document.getElementById('1erListeDeroulante').options[i].value "x"; 
                              valeurSelect1 = document.getElementById('1erListeDeroulante').options[i].value "xx";
                              valeurSelect1 = document.getElementById('1erListeDeroulante').options[i].value "xxx";
                              //cherche la valeur de la 2eme liste déroulante
                              i = document.getElementById('2emeListeDeroulante').selectedIndex; 
                              if (i == 0) return;
                              valeurSelect2 = document.getElementById('2emeListeDeroulante').options[i].value "Hotellerie"; 
                              valeurSelect2 = document.getElementById('2emeListeDeroulante').options[i].value "Restauration";
                              valeurSelect2 = document.getElementById('2emeListeDeroulante').options[i].value "Activité";
                              // on envoie l'utilisateur sur la page désiré avec les info commune et activité en $_GET
                              parent.location.href = '#ancre_vers_x'+valeurSelect1+'&activite='+valeurSelect2;
                              }
                                             </script>
                                             <hr/>
                                             <h2 id="ancre_vers_x">x</h2>
                              

                              dsl, Encore planté !!
                              • Partager sur Facebook
                              • Partager sur Twitter
                                6 février 2009 à 14:11:19

                                C'est pas bon n'est ce pas ?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  7 février 2009 à 16:03:31

                                  Pour l'instant à la fin j'ai ça :
                                  // on envoie l'utilisateur sur la page désiré avec les info commune et activité en $_GET
                                  parent.location.href = '#ancre_vers_x'+valeurSelect1+'&activite='+valeurSelect2;
                                  }
                                                 </script>
                                                 <hr/>
                                                 <h2 id="ancre_vers_x">x</h2>
                                  

                                  Est ce que je peux pas plutot faire dans ce sene là ? :
                                  valeurSelect1+valeurSelect $_GET parent.location.href = "#ancre_vers_activite_de_x
                                  </script>
                                  <hr/>
                                  <h2 id="ancre_vers_activite_de_x"> x </h2>
                                  

                                  Si j'ai compris, $_GET ça veut dire égale, ou un truc dans le genre ?
                                  Si quelqu'un pouvait m'aider ...
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    7 février 2009 à 19:38:02

                                    Citation : ETRNL-JG


                                    <select name="commune" onChange="display('2emeListeDeroulante')">
                                                       <option value="Choisicez">Choisissez une option</option>
                                                       <option value="x">x</option>
                                                       <option value="xx">xx</option>
                                                       <option value="xxx">xxx</option>
                                                   </select>
                                    
                                                   <select name="activité" id="2emeListeDeroulante" style="display:none;">
                                                       <option value="Choisissez">Choisissez une option</option>
                                                       <option value="Hotellerie">Hotellerie</option>
                                                       <option value="Restauration">Restauration</option>
                                                       <option value="Activité">Activité touristique/sportive</option>
                                                   </select>
                                    
                                    
                                    			   <script type="text/javascript">
                                    
                                    			   function Lien() // pas besoin d'attribut id, vu que c'est pas une fonction général, l'id tu pourras directement le mettre dans ta fonction
                                    {
                                    //cherche la valeur de la 1er liste déroulante
                                    i = document.getElementById('1erListeDeroulante').selectedIndex; 
                                    if (i == 0) return;
                                    valeurSelect1 = document.getElementById('1erListeDeroulante').options[i].value "x"; 
                                    valeurSelect1 = document.getElementById('1erListeDeroulante').options[i].value "xx";
                                    valeurSelect1 = document.getElementById('1erListeDeroulante').options[i].value "xxx";
                                    //cherche la valeur de la 2eme liste déroulante
                                    i = document.getElementById('2emeListeDeroulante').selectedIndex; 
                                    if (i == 0) return;
                                    valeurSelect2 = document.getElementById('2emeListeDeroulante').options[i].value "Hotellerie"; 
                                    valeurSelect2 = document.getElementById('2emeListeDeroulante').options[i].value "Restauration";
                                    valeurSelect2 = document.getElementById('2emeListeDeroulante').options[i].value "Activité";
                                    // on envoie l'utilisateur sur la page désiré avec les info commune et activité en $_GET
                                    parent.location.href = '#ancre_vers_x'+valeurSelect1+'&activite='+valeurSelect2;
                                    }
                                                   </script>
                                                   <hr/>
                                                   <h2 id="ancre_vers_x">x</h2>
                                    


                                    dsl, Encore planté !!



                                    Tout d'abord, je te conseil de mettre ton script javascript entre les balises <head> et </head> ! C'est bien plus propre ! Et tu dois déclarer tes fonctions javascript avant que tu les appelles.

                                    Ensuite tu as écris :
                                    valeurSelect1 = document.getElementById('1erListeDeroulante').options[i].value "x"; 
                                    valeurSelect1 = document.getElementById('1erListeDeroulante').options[i].value "xx";
                                    valeurSelect1 = document.getElementById('1erListeDeroulante').options[i].value "xxx";
                                    

                                    Tu n'as pas compris ce que la ligne faisait.
                                    Cette ligne ci-dessous, affecte à la variable valeurSelect1 la valeur du champ option selectionné par l'utilisateur.
                                    valeurSelect1 = document.getElementById('1erListeDeroulante').options[i].value;

                                    Donc si l'utilisateur à choisis la commune "x" dans la première liste déroulante, la variable valeurSelect1 contiendra 'x'. Il ne faut nullement mettre la ligne 3 fois !!! et avec des "x" après qui ne signifient absolument rien !

                                    Pour le $_GET, va te renseigner sur les tutos de mateo en php !!! C'est pour récupérer des valeurs dans des adresses url, mais toi si j'ai compris tu veux simplement envoyé plus bas sur la page c'est ça ?


                                    Ensuite, ta fonction javascript Lien() tu ne l'appelles nulle part ! Comment veux-tu qu'il se passe quelque chose !!! Tu dois avoir un onChange="lien()" dans ta 2ème liste déroulante ! :o


                                    Pour finir, je pense que tu te lances dans une réalisation trop dur pour toi. Il te manque les bases de chez bases, un petit coup de lecture des tutos de mateo te ferait du bien, car là tu comprends la moitié de travers (ex : $_GET qui vaut une sorte d'égale ... je sais pas où tu es allé la chercher celle-là).

                                    Bien à toi,
                                    Corentin

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      9 février 2009 à 14:33:35

                                      Citation

                                      Tout d'abord, je te conseil de mettre ton script javascript entre les balises <head> et </head> ! C'est bien plus propre ! Et tu dois déclarer tes fonctions javascript avant que tu les appelles.


                                      ok !

                                      Citation

                                      si j'ai compris tu veux simplement envoyé plus bas sur la page c'est ça ?


                                      c'est tout à fait ça :)

                                      Citation

                                      Pour finir, je pense que tu te lances dans une réalisation trop dur pour toi. Il te manque les bases de chez bases, un petit coup de lecture des tutos de mateo te ferait du bien, car là tu comprends la moitié de travers


                                      lol c'est pas la plus dure de mes pages, c'est juste que je fais pas encore de javascript... je me suis arrété au php :)

                                      Citation

                                      (ex : $_GET qui vaut une sorte d'égale ... je sais pas où tu es allé la chercher celle-là).


                                      Moi non plus !

                                      -----------------------
                                      édité:

                                      Bon e fait pour le code j'ai compris, mais à la fin je sais pas ce que je dois faire !
                                      Comment je dis pour dire que quand le visiteur choisi un truc plus un autre truc ça le redirige là ou je veu ? Il me manque que ça dans mon code !

                                      Merci de ton aide :)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        16 février 2009 à 11:32:54

                                        up :-°
                                        comment est ce que je dois faire pour faire le redirectionnement mtn svp ?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          16 février 2009 à 17:40:02

                                          Donne un exemple, tu veux qu'il soit rediriger où?
                                          Pour le rediriger tu utilises la fonction javascript Lien()... ou le lien ou tu veux pointé est :
                                          parent.location.href = 'ULR_OU_TU_VEUX_QUE_LUTILISATEUR_AILLE.com/index.php?Sget=get#ancre';
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            18 février 2009 à 19:37:59

                                            ba je veux que quand le visiteru choisis
                                            x et hotellerie, qu'il soit redirigé vers l'ancre #hotellerie-de-x
                                            pareil pour restauration de xx => #restauration-de-xx

                                            parent.location.href = 'ULR_OU_TU_VEUX_QUE_LUTILISATEUR_AILLE.com/index.php?Sget=get#ancre';
                                            

                                            je suis obligé de mettre :
                                            'ULR_OU_TU_VEUX_QUE_LUTILISATEUR_AILLE.com/index.php?Sget=get#ancre'
                                            Je peux pa mettre directement le lien vers l'ancre de la mm page au lieu de l'url de la page plus l'encre ?

                                            Comment je dis que quand il choisi tel truc il choisi cette url ?

                                            Merci de ton aide :)

                                            (si je repond pas tt de suite, comme là, c'est que je suis privé d'ordi --" !)
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              19 février 2009 à 17:38:30

                                              Avec cette technique tu dois mettre l'adresse en entier ! Ce n'est pas un chemin relatif, mais absolu !

                                              "Comment je dis que quand il choisi tel truc il choisi cette url ?"
                                              Comme déjà dis, tu mets un onChange="Lien()" dans ta balise select qui appelle la fonction javascript Lien(). Quand l'utilisateur choisira une option dans le formulaire select, il sera rediriger grâce à la fonction Lien().
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                25 février 2009 à 18:41:24

                                                Je pense que j'ai compris ;)

                                                Vous recherchez une activité dans une commune avoisinante ?<br/>
                                                	       <select name="commune" onChange="display('2emeListeDeroulante')">
                                                                   <option value="Choisicez">Choisissez une option</option>
                                                                   <option value="x">x</option>
                                                                   <option value="xx">xx</option>
                                                                   <option value="xxx">xxx</option>
                                                               </select>
                                                
                                                               <select name="activité" id="2emeListeDeroulante" style="display:none;">
                                                                   <option value="Choisissez">Choisissez une option</option>
                                                                   <option value="Hotellerie">Hotellerie</option>
                                                                   <option value="Restauration">Restauration</option>
                                                                   <option value="Activité">Activité touristique/sportive</option>
                                                               </select>
                                                
                                                
                                                			   <script type="text/javascript">
                                                
                                                function display(id) {
                                                	
                                                   var elem = document.getElementById(id);
                                                   if (!elem) return;
                                                   if (elem.style.display == 'none') 
                                                   {
                                                	elem.style.display = 'block';
                                                   } 
                                                	
                                                //cherche la valeur de la 1er liste déroulante
                                                i = document.getElementById('1erListeDeroulante').selectedIndex; 
                                                if (i == 0) return;
                                                valeurSelect1 = document.getElementById('1erListeDeroulante').options[i].value; 
                                                //cherche la valeur de la 2eme liste déroulante
                                                i = document.getElementById('2emeListeDeroulante').selectedIndex; 
                                                if (i == 0) return;
                                                valeurSelect2 = document.getElementById('2emeListeDeroulante').options[i].value; 
                                                // on envoie l'utilisateur sur la page désiré avec les info commune et activité en $_GET
                                                parent.location.href = 'infos_pratiques.html?commune='+valeurSelect1+'&activite='+valeurSelect2; //infos_pratiques.html est ma page où se trouve ce code et mes ancres.
                                                	
                                                }
                                                               </script>
                                                               <hr/>
                                                               <h2 id="x">x</h2>
                                                			   un peu de blabla...
                                                			   
                                                			       <h3 id="Hotellerie">Hotellerie</h3>
                                                				   blabla
                                                				   
                                                				   <h3 id="Restauration">Restauration</h3>
                                                				   blabla ...
                                                				   
                                                				   etc pour les ancres...
                                                				   
                                                			   <h2 id="xx">xx</h2>
                                                			   Et c'est repartis...
                                                


                                                Alors ? Je tiens le bon bout ?!

                                                lol, merci de ta patience ;)
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                Menus déroulants "combinés"

                                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                • Editeur
                                                • Markdown