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 :

Afficher la sélection d'une liste à choix multiple dans une autre liste


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut Afficher la sélection d'une liste à choix multiple dans une autre liste
    Bonjour,

    j'ai recherché si mon problème avait déjà été posé, et je n'ai pas trouvé. Bref.

    J'ai une liste à choix multiple remplie avec ma base de données.
    Quand on sélectionne un élément "elem1" dans la liste, et que l'on appuie sur un bouton "ajout" à côté, "elem1" doit s'afficher dans la seconde liste à choix multiple.

    J'ai trouvé comment faire avec des valeurs ne provenant pas de la base de données, mais mélanger du javascript avec des listes remplies grâce à PHP/MySQL, je ne vois pas bien comment faire ...

    Voici ce que j'ai comme code pour le moment (trouvé sur le web) :
    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
    <script language="JavaScript">
    function moveItem1To2 () {
      var i1 = document.testForm.list1.selectedIndex;
      var text1 =  document.testForm.list1.options[i1].text;
      var value1 = document.testForm.list1.options[i1].value;
      var list2 = document.testForm.list2;
      list2.options[list2.options.length]= new Option(text1 ,value1);
      document.testForm.list1.remove(i1);
    }
    function moveItem2To1 () {
      var text1 =  document.testForm.list2.options[document.testForm.list2.selectedIndex].text;
      var value1 = document.testForm.list2.options[document.testForm.list2.selectedIndex].value;
      var list1 = document.testForm.list1;
      list1.options[list1.options.length]= new Option(text1,value1);
      document.testForm.list2.remove(document.testForm.list2.selectedIndex);
    }
    </script>
     
     
    <body>
     
    <form name="testForm">
    <select name="list1" onChange="moveItem1To2()" size=5>
    <script language="javascript">
    var list1 = document.testForm.list1;
    list1.options[list1.options.length] = new Option('Pomme','P1');
    list1.options[list1.options.length] = new Option('Poire','P2');
    list1.options[list1.options.length] = new Option('Peche','P3');
    list1.options[list1.options.length] = new Option('Poivre','P4');
    list1.options[list1.options.length] = new Option('Prune','P5');
    list1.options[list1.options.length] = new Option('Abricot','A1');
    </script>
    </select>
    <select name="list2" onChange="moveItem2To1()" size=5>
    <option value="1">Pomme
    </select>
    </form>
    Y'a-t-il un moyen de remplacer "pomme, poire, pêche ..." par les données de ma table ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 646
    Points : 66 685
    Points
    66 685
    Billets dans le blog
    1
    Par défaut
    as tu fais une recherche avec "liste deroulantes liées"

  3. #3
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Malheureusement je dois faire un changement. Je n'ai plus une liste déroulante à choix multiple, mais deux listes déroulantes simples (liées entre elles).

    Une fois que j'ai fait ma sélection, j'obtiens une variable avec les deux valeurs (choix_liste1+choix_liste2) et je dois appuyer sur le bouton pour afficher cette variable dans la liste à choix multiple (donc une troisième liste).

    J'ai essayé d'afficher ma variable dans la liste3 sans passer sur le bouton. Ca ne m'affiche que la première valeur sélectionnée dans la liste1. Pas la valeur sélectionnée dans la liste2.
    Y'a-t-il une erreur dans mon code ? Le $selection est peut-être mal placé ?

    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
    $req_liste1 = mysql_query("SELECT id_prestation,nom_prestation FROM prestation WHERE id_type_prestation LIKE '$id_type' ;");
    echo '<tr><td><select name="prestations" onchange="this.form.submit();">';
    echo '<option>Choisissez dans la liste</option>';
    while ($donnees = mysql_fetch_array($req_liste1)) 
    {  
    	$selected = (isset($_POST['prestations']) && $_POST['prestations'] == $donnees['id_prestation'])? " selected":""; 
    	echo '<option value="'.$donnees['id_prestation'].'"'. $selected.'">'.$donnees['nom_prestation'].'</option>';
    	$presta = $_POST['prestations'];
    }
    echo '</select></td>';
    		
    // Fournisseur associé à la prestation sélectionnée
    $req_liste2 = mysql_query("SELECT F.raison_sociale FROM fournisseur F
    		JOIN fournisseur_prestation FP ON F.id_fournisseur = FP.id_fournisseur WHERE FP.id_prestation LIKE '$presta';");
    echo '<td><select name="fournisseurs" onchange="this.form.submit();">';
    while ($donnees = mysql_fetch_array($req_liste2)) 
    {  
    	$selected = (isset($_POST['fournisseurs']) && $_POST['fournisseurs'] == $donnees['id_fournisseur'])? " selected":"";
    	echo '<option value="'.$donnees['id_fournisseur'].'"'. $selected.'">'.$donnees['raison_sociale'].'</option>';
    	$four = $_POST['fournisseurs'];
            // Variable composée des choix faits dans liste1 et liste2
    	$selection = $presta.'-'.$four;
    }
    echo '</select></td>';


    [EDIT] Bon j'ai trouvé ma solution, j'avais un problème dans mon $selected et dans mon option. [/EDIT]

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 21/05/2014, 21h21
  2. [AC-2010] Récupérer valeurs liste choix multiple dans une requête
    Par kimai dans le forum VBA Access
    Réponses: 13
    Dernier message: 06/02/2013, 11h39
  3. Réponses: 1
    Dernier message: 26/12/2010, 22h20
  4. choix multiples dans une liste déroulante
    Par luffy2mars dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 14/01/2009, 17h34
  5. Réponses: 27
    Dernier message: 12/04/2007, 11h23

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