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 :

Récupération d'un select avec option multiple


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web et Mobile
    Inscrit en
    Juin 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web et Mobile

    Informations forums :
    Inscription : Juin 2010
    Messages : 76
    Points : 65
    Points
    65
    Par défaut Récupération d'un select avec option multiple
    Bonjour, je m'adresse à vous car çà doit faire 2 heures que je bute sur un problème de récupération de select multiple.

    Le code suivant à été récupérer sur le net :
    <HEAD></HEAD> :
    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
    62
    63
    64
     
    <script language="JavaScript" type="text/javascript">
     
    function deplacer( liste_depart, liste_arrivee ) {
      for( i = 0; i < liste_depart.options.length; i++ ) {
        if( liste_depart.options[i].selected && liste_depart.options[i] != "" ) {
          o = new Option( liste_depart.options[i].text, liste_depart.options[i].value);
          liste_arrivee.options[liste_arrivee.options.length] = o;
          liste_depart.options[i] = null;
          i = i - 1 ;
        }
        else {
          // alert( "aucun element selectionne" );
        }
      }
    }
     
    function deplacer_tout( liste_depart, liste_arrivee ) {
      for( i = 0; i < liste_depart.options.length; i++ ) {
        o = new Option( liste_depart.options[i].text, liste_depart.options[i].value);
        liste_arrivee.options[liste_arrivee.options.length] = o;
        liste_depart.options[i] = null;
        i = i - 1 ;
      }
    }
     
    function deplacer_hautbas( liste, sens ) {
      // init
      var listemax = liste.length - 2;
      var listesel = liste.selectedIndex;
      // debordement
      if( ( listesel < 0 ) || ( listesel < 1 && sens == -1 ) || ( listesel > listemax && sens == 1 ) ) {
        return false;
      }
      // permutation
      tmpopt = new Option( liste.options[listesel+sens].text, liste.options[listesel+sens].value );
      liste.options[listesel+sens].text = liste.options[listesel].text;
      liste.options[listesel+sens].value = liste.options[listesel].value;
      liste.options[listesel+sens].selected = true;
      liste.options[listesel].text = tmpopt.text;
      liste.options[listesel].value = tmpopt.value;
      liste.options[listesel].selected = false;
      return true;
    }
     
    function soumettre_2listes( liste1, liste2 ) {
      var listelen1 = liste1.length;
      for( i = 0; i < listelen1; i++ ) {
        liste1.options[i].selected = true;
      }
      var listelen2 = liste2.length;
      for( j = 0; j < listelen2; j++ ) {
        liste2.options[j].selected = true;
      }
    }
     
    function soumettre_1liste( liste ) {
      var listelen = liste.length;
      for( i = 0; i < listelen; i++ ) {
        liste.options[i].selected = true;
      }
    }
     
    </script>
    <BODY></BODY> :
    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
    62
    63
    64
    65
    66
    67
    68
     
    <form name="export" method="POST" OnSubmit="javascript: soumettre_1liste( document.forms[0].choix );" action="recuperation.php">
     
    <table summary="" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <th style="width:  90px;"></th>
        <th style="width: 220px;"></th>
        <th style="width: 150px;"></th>
        <th style="width: 220px;"></th>
        <th style="width:  90px;"></th>
      </tr>
      <tr>
        <td><br /></td>
        <td>Champ(s) disponible(s)<br /></td>
        <td><br /></td>
        <td>Champ(s) sélectionné(s)<br /></td>
        <td><br /></td>
      </tr>
      <tr>
        <td><br /></td>
        <td rowspan="7">
          <select name="dispo[]" id="dispo" style="width: 210px;" size="16" multiple="multiple" OnDblClick="javascript: deplacer( this.form.dispo, this.form.choix );">
          <?php
            while($data = mysql_fetch_array($result)) {
              echo '<option value="'.$data['geolocalisations_id'].'">'.$data['geolocalisations_libelle'].'<br /></option>';
            }
           ?>
          </select><br />
        </td>
        <td><br /></td>
        <td rowspan="7">
          <select name="choix[]" id="choix" style="width: 210px;" size="16" multiple="multiple" OnDblClick="javascript: deplacer( this.form.choix, this.form.dispo );">
          </select><br />
        </td>
        <td><br /></td>
      </tr>
      <tr>
        <td><br /></td>
        <td><input type="button" value="ajouter >" OnClick="javascript: deplacer( this.form.dispo, this.form.choix );" /><br /></td>
        <td rowspan="2"><input type="button" value="Monter" OnClick="javascript: deplacer_hautbas( this.form.choix, -1 );" /><br /></td>
      </tr>
      <tr>
        <td><br /></td>
        <td><input type="button" value="ajouter tout >>" OnClick="javascript: deplacer_tout( this.form.dispo, this.form.choix );" /><br /></td>
      </tr>
      <tr>
        <td><br /></td>
        <td><br /></td>
        <td><br /></td>
      </tr>
      <tr>
        <td><br /></td>
        <td><input type="button" value="< retirer" OnClick="javascript: deplacer( this.form.choix, this.form.dispo );" /><br /></td>
        <td rowspan="2"><input type="button" value="Descendre" OnClick="javascript: deplacer_hautbas( this.form.choix, 1 );" /><br /></td>
      </tr>
      <tr>
        <td><br /></td>
        <td><input type="button" value="<< retirer tout" OnClick="javascript: deplacer_tout( this.form.choix, this.form.dispo );" /><br /></td>
      </tr>
      <tr>
        <td><br /></td>
        <td><br /></td>
        <td><br /></td>
      </tr>
    </table>
    <br />
    <input type="submit" value="OK" /> <input type="reset" value="Annuler" /><br />
    </form>
    Et voilà mon code de récupération de la page "recuperation.php" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    $id=1;
    for ($i = 0, $c = count($_POST['choix']); $i < $c; $i++) {
      $query = "INSERT INTO contenir (graphiques_id, libelledonnees_id) VALUES ('".$id."', '".$_POST['choix'][$i]."');";
      echo $query.'</br>';
      // $result = mysql_query($query);
    }
    ?>
    Hors aucune requête ne s'affiche à l'écran.

    Je vous remercie d'avance de vos réponses.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ta boucle est vraiment très laide : utilise foreach pour ta boucle et un id autoincrementé pour ta table.

    Sinon controler ce que tu recois du formulaire :
    Ton problème doit plutot se situer sur le Javascript.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web et Mobile
    Inscrit en
    Juin 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web et Mobile

    Informations forums :
    Inscription : Juin 2010
    Messages : 76
    Points : 65
    Points
    65
    Par défaut
    J'ai trouvé une partie de mon erreur puisque maintenant avec DUMP, je récupère bien mon tableau "choix[]" mais je n'ai toujours rien dedans.
    C'est un problème sur la partie JavaScript.
    Si quelqu'un a une idée, sinon je demanderai à mes profs d'info jeudi.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Web et Mobile
    Inscrit en
    Juin 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web et Mobile

    Informations forums :
    Inscription : Juin 2010
    Messages : 76
    Points : 65
    Points
    65
    Par défaut
    C'est bon j'ai trouvé la solution, en faite c'était javascript qui me posait problème.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 20/08/2014, 09h48
  2. Changer font-size sur un select avec options
    Par dark0502 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 09/10/2013, 00h28
  3. Réponses: 3
    Dernier message: 04/05/2011, 11h05
  4. [POO] Select avec option
    Par snaxisnake dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 15/09/2008, 17h16
  5. select avec WHERE multiple or and
    Par rvm31 dans le forum Requêtes
    Réponses: 7
    Dernier message: 05/01/2008, 13h54

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