[PHP]Passer 2 variables dans l'URL

Salut tout le monde !

Voilà, j'aimerai passer deux variables dans mon URL, voici mon code :

function appel() {
     location.href="materielsOccas.shtml?tbl2="+tb1.options    [tb1.selectedIndex].value ; 
 }


appel() est une fonction en javascript, j'aimerai passer la variable 'toto' ayant la valeur 'tb1.options [tb1.selectedIndex].text ;' Mais je vois pas du tout comment faire

Un grand merci d'avance !

17 réponses

Résumé de la discussion

Passer deux variables dans l’URL à partir d’un élément select en JavaScript nécessite de concaténer les paramètres dans la requête, en utilisant la valeur et le texte de l’option sélectionnée. La solution efficace consiste à construire l’URL avec plusieurs paramètres, par exemple typeProduit et contenu, en ajoutant &contenu=texte et en récupérant texte via options[selectedIndex].text. Des exemples montrent que l’utilisation de location.href avec une chaîne comme 'materielsOccas.shtml?typeProduit='+val+'&contenu='+texte est fonctionnelle, et que l’opération peut être étendue à d’autres paramètres. En PHP, les valeurs peuvent ensuite être récupérées via $_GET['parametre']; ou bien on peut privilégier un formulaire si la transmission serveur est préférable.

Bobot (l’IA à votre service)
  1. Contributeur
    Salut,

    Je suppose qu'apparemment la valeur de ton toto est celle que l'utilisateur sélection dans un champ formulaire <select></select>.

    Donc ce ne serait pas plus simple de l'envoyer par forumlaire ?
    1. Salut
      pourquoi ne pas passer une variable avec php sans fonction javascript (les pseudo frames: http://www.phpdebutant.org/article68.php).
      <a href="url(page.php)?parametre1=valeur1">lien</a>
      Dans ta page page.php, recupere les valeurs avec:
      $param1=$_GET['parametre1'];

      A+,
      tom
      1. Contributeur
        Disons qu'apparemment les valeurs sont dans un champ de sélection pour l'utilisateur, d'où ma proposition de les transmettre par soumission de formulaire ;)
    2. Oui, en effet Erdnax, il s'agit bien de <select></select>

      <select name="tb1" 
                onchange="appel();">


      Qu'appel tu l'envoyer par formulaire ?

      Je vais tester ta solution tom@

      En tout cas un grand merci des réponses !
      1. Contributeur
        Ce qu'il faut que tu fasse, si ce n'est pas déjà fait ;), c'est que tu entoure tes balises <select> et </select> par <form> et </form> de manière à ce que ça te donne quelque chose comme ça :
        <form action="materielsOccas.shtml" method="get">
        <select name="tb1">
        <option value="valeur1">Nom de l'option1</option>
        <option value="valeur2">Nom de l'option2</option>
        etc...
        </select><br>
        <input type="submit" value="Envoyer">
        </form>
        De cette manière, lorsque le visiteur aura choisi son option et cliqué sur le bouton Envoyer, ta page materielsOccas.shtml devrait recevoir les données par l'url ;)

        @+
        1. haa... je vois ce que tu voulais dire. Mais en faite, j'ai besoin que l'action se passe dés que la personne sélectionne une ligne dans la liste, pour qu'ensuite la value de cette ligne serve de variable pour une requête. Ton idée est très bonne, mais dans mon cas ne peut fonctionner

          Merci des réponses !!
          1. Contributeur
            Lol, alors le javascript était une bonne idée ;)

            Tu peux essayer ça :
            function appel() {
            window.location.href="materielsOccas.shtml?tbl2="+document.monform.tb1.options.selectedIndex.value; 
            }
            Et pour ton select, fais-le comme ça :
            <form name="monform">
            <select name="tb1" onchange="appel();">
            <option selected>-- Veuillez faire votre choix --</option>
            <option value="valeur1">Nom de l'option1</option>
            <option value="valeur2">Nom de l'option2</option>
            </select>
            </form>
            Qu'est-ce que ça donne ?
            1. Merci encore de la réponse, c'est sympa !!

              Ca marche plus. En faisant :

              function appel()
                 { location.href="materielsOccas.shtml?tbl2="+tb1.options[tb1.selectedIndex].value;  }


              select :

              <select name="tb1" onchange="appel();">
              <option selected>-- Veuillez faire votre choix --</option>
              <option value="valeur1">Nom de l'option1</option>
              <option value="valeur2">Nom de l'option2</option>
              </select>
              


              ça marche très bien, du moins j'arrive à récupérer la 'value', mais maintenant je souhaiterai récupérer le nom de l'option, d'ou ma question du départ, comment passer deux variables dans mon url :)

              @ller, bon appétit ;)
              1. Contributeur
                Lol, ben je crois que je viens de comprendre ton problème ^^

                En fait, maintenant il me semble que c'est assez simple :
                location.href="materielsOccas.shtml?tbl2="+tb1.options[tb1.selectedIndex].value + "&tbl2titre=" +tb1.options[tb1.selectedIndex].text;
                Tu remarqueras que j'ai du modifier le second tbl2 en rajoutant titre, afin que l'on puisse distinguer le nom des deux variables transmises.
                1. cool... alors là, merci beaucoup, ça marche nickel !!! ;)

                  Bonne journée, et encore merci !
                  1. Contributeur
                    De rien, désolé d'avoir mis si longtemps à comprendre ce que tu voulais ;) ^^ :P
                2. C'est encore moi ;)

                  Je me demandais si on pouvais passer une variable PHP dans une fonction javascript, voici mon code :

                  function appel2()
                  
                  { location.href="materielsOccas.shtml?typeProduit="+typeProd.options[typeProd.selectedIndex].value + "&contenu=" +typeProd.options[typeProd.selectedIndex].text + "&mark="+tabloMarque.options[tabloMarque.selectedIndex].text + "&inter1="$inter1; }</code>

                  Bon, je sais que ce que j'ai fait ça marche pas, mais c'est pour vous montrer mon idée.
                  1. Contributeur
                    Re,

                    Presque tout est faisable ! et là, oui ;) comme ça :
                    <?php echo 'function appel2()
                       { location.href="materielsOccas.shtml?typeProduit="+typeProd.options[typeProd.selectedIndex].value + "&contenu=" +typeProd.options[typeProd.selectedIndex].text + "&mark="+tabloMarque.options[tabloMarque.selectedIndex].text + "&inter1="'.$inter1.';  }';
                    @+
                3. Mais oui, chuis cruche... Bref, re merci beaucoup !!!!
                  1. Contributeur
                    Eheh cruche ou pas, c'est po grave ^^

                    L'imortant c'est de trouver, ou de faire rappeller certaines choses ;)
                4. Bon, tu vas me prendre pour une neuneu, mais ça marche po :(

                  voilà mon code :

                  <?
                  $pass = "juste un test";
                  
                  <script type="text/javascript">
                     
                     $ctt= 'function appel2()
                     { location.href="materielsOccas.shtml?typeProduit="+typeProd.options[typeProd.selectedIndex].value + "&contenu=" +typeProd.options[typeProd.selectedIndex].text + "&mark="+tabloMarque.options[tabloMarque.selectedIndex].text + "&inter1="+'.$pass.';  }
                    
                  </script>';
                  
                  ?>
                  


                  En faite j'utilise des modules fait par mon maitre de stage, donc je dois mettre tout le code html dans la variable $ctt. J'ai testé 36000 trucs mais à chaque fois Internet Explorer me dit qu'il y a des erreurs comme : ';' attendu franchement je vois pas ou.
                  1. Contributeur
                    Allez, une petite aide, un mot clé, dis moi si tu trouves :

                    echo

                    ^^
                    1. Oui, je l'avais vu :) je l'ai mis mais ça marchait pas (j'ai du mal le placer) mais je viens juste de trouver à l'instant une solution :

                       function appel2()
                         { location.href="materielsOccas.shtml?typeProduit="+typeProd.options[typeProd.selectedIndex].value + "&contenu=" +typeProd.options[typeProd.selectedIndex].text + "&mark="+tabloMarque.options[tabloMarque.selectedIndex].text + "&inter1='.$pass.' ";   }


                      En faite, il fallait mettre la variable avant le guillement .
                      1. Contributeur
                        Alors c'est tout bon ou c'est-y po tout bon ?
                    2. C'est complètement tout bon ;)
                      1. Contributeur
                        Alors c'est complètement trop cool. Si t'as encore un problème, hésite pas ;)

                        @+

                        P.S. t'as une adresse ou on peut voir tout ça.
                    3. Merci, t'es très sympa !!
                      1. Contributeur
                        Une 'tite adresse où on peut voir ce que ça donne ? :)
                    4. hélas pas encore, là je fais un site marchand mais je suis loin de l'avoir fini.
                      1. Contributeur
                        Oki, no prob ;)

                        @+