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

Langage PHP Discussion :

Liste déroulante multiple ne renvoit qu'une seule valeur


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    364
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 364
    Par défaut Liste déroulante multiple ne renvoit qu'une seule valeur
    Bonjour à tous,

    Je ne pensais pas venir un jour dans la rubrique HTML pour poser une question, mais me voilà...

    Mon problème est en fait fort simple:
    J'ai fait un select multiple, afin de pouvoir sélectionner plusieurs valeurs.

    Le problème est que lors du submit, lorsque je regarde ce que contient mon post (à l'aide de php), je n'ai qu'une seule valeur, la dernière de la liste pour être exact

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     <SELECT NAME="jeux" SIZE="4" multiple="MULTIPLE">
    <OPTION VALUE="dd">Destruction Derby</OPTION>
    <OPTION VALUE="racer">Moto Racer</OPTION>
    <OPTION VALUE="doom" SELECTED>Doom</OPTION>
    <OPTION VALUE="duke">Duke Nukem</OPTION>
    <OPTION VALUE="quake">Quake</OPTION>
    <OPTION VALUE="civ" SELECTED>Civilisation</OPTION>
    <OPTION VALUE="sim">Sim City</OPTION>
    </SELECT>
    J'ai repris pour l'exemple le code d'un tuto, même s'il est pas valide (majuscules), mais, le mien, est construit avec un JS. Au départ, je croyais que c'était mon JS qui posait problème, mais le code au dessus aussi pose ce problème...

    C'est incroyable,...

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 661
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 661
    Par défaut
    bonjour,

    pour les listes à sélection multiple tu dois réaliser une boucle sur les options et vérifier celles qui sont sélectionnées :
    Code html : 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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <html>
     
    <head>
     
    <title></title>
     
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="Content-Language" content="fr">
     
     
    <script type="text/javascript">
    <!--  
    function selecListe()
    {
      var liste = document.getElementById("idJeux");
      var nopt = liste.options.length;
      var i, valeurs;
      
      valeurs = "";
      for (i=0; i<nopt; i++)
      {
        if (liste.options[i].selected)
        {
          valeurs = valeurs + liste.options[i].value+" ; ";
        }
      }
      alert(valeurs);
     
    }
    //-->
    </script>
     
    </head>
     
    <body>
     
    <select id="idJeux" name="jeux" size="4" multiple="multiple">
      <option value="dd">destruction derby</option>
      <option value="racer">moto racer</option>
      <option value="doom" selected>doom</option>
      <option value="duke">duke nukem</option>
      <option value="quake">quake</option>
      <option value="civ" selected>civilisation</option>
      <option value="sim">sim city</option>
    </select>
     
    <input value="cliquez ici" type="button" onclick="selecListe()">
     
     
    </body>
     
    </html>
    j'ai donné un id à ta liste

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    364
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 364
    Par défaut
    merci pour ta réponse

    Le Javascript permettant de vérifier le formulaire fonctionne en effet, mais si je rajoute un submit à mon formulaire, la requête post ne comprend que la dernière valeur de la liste

    C'est curieux quand même ça...

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    <html>
     
    <head>
     
    <title></title>
     
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="Content-Language" content="fr">
     
     
    <script type="text/javascript">
    <!--  
    function selecListe()
    {
      var liste = document.getElementById("idJeux");
      var nopt = liste.options.length;
      var i, valeurs;
     
      valeurs = "";
      for (i=0; i<nopt; i++)
      {
        if (liste.options[i].selected)
        {
          valeurs = valeurs + liste.options[i].value+" ; ";
        }
      }
      alert(valeurs);
     
    }
    //-->
    </script>
     
    </head>
     
    <body>
     
    <form action="" method="post"> 
    <select id="idJeux" name="jeux" size="4" multiple="multiple">
      <option value="dd">destruction derby</option>
      <option value="racer">moto racer</option>
      <option value="doom" selected>doom</option>
      <option value="duke">duke nukem</option>
      <option value="quake">quake</option>
      <option value="civ" selected>civilisation</option>
      <option value="sim">sim city</option>
    </select>
     
    <input value="cliquez ici" type="button" onclick="selecListe()">
     
    <input type="submit"/>
     
    </form>
    <?php
    print_r($_POST);
     
    ?>
     
    </body>
     
    </html>

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    364
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 364
    Par défaut
    Arf... bin voilà, idée de génie: je viens de me dire, vu qu'il y a une liste de valeur, pourquoi ne pas indiquer un tableau en nom pour la liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <select id="idJeux" name="jeux[]" size="4" multiple="multiple">
    Et là, bingo !!
    Très con comme truc

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

Discussions similaires

  1. [AC-2010] Liste déroulante avec plusieurs colonnes mais une seule affichée
    Par scorpking dans le forum IHM
    Réponses: 2
    Dernier message: 23/01/2014, 14h07
  2. Récupérer les valeurs d'une liste déroulante multiple
    Par noobyyy dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 27/05/2010, 23h43
  3. Réponses: 8
    Dernier message: 02/11/2009, 14h01
  4. [MySQL] Une liste déroulante affichant les données d'une requête SHOW par ordre alphabétique
    Par jack_1981 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 22/12/2005, 16h53
  5. [MySQL] Liste déroulante contenant deux champs d'une requete
    Par budiste dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/10/2005, 12h21

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