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 :

PHP - Récupération des valeurs choix multiple


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut PHP - Récupération des valeurs choix multiple
    Bonjour,

    Tout d'abord, merci pour l'attention que vous portez à mon post.

    J'ai un petit problème de récupération des valeurs d'une liste à choix multiple dans une table.

    Tout d'abord, j'ai une table avec une seule ligne. A l'aide d'un bouton, cela me permet d'ajouter une autre ligne (dynamique) sur ma table. Au « submit », je récupère les valeurs de la table avec PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php 
    $txtbox = $_POST['nom']; 
     
    foreach($txtbox as $a => $b) 
     
    echo "Nom: $txtbox[$a] <br />"; 
    ?>
    Jusque la pas de problème.

    J'ai ajouté une colonne "Col1" dans ma table "<TABLE> ... >/TABLE>" avec choix multiple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <td> 
    <select name="Col1[]" size="4" multiple> 
    <option value="Valeur 1">Valeur 1</option> 
    <option value="Valeur 2">Valeur 2</option> 
    <option value="Valeur 3">Valeur 3</option> 
    <option value="Valeur 4">Valeur 4</option> 
    <option value="Valeur 5">Valeur 5</option> 
    </select> 
    </td>
    j'ai ajouté dans le code PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    $txtbox = $_POST['nom']; 
    $Col1 = $_POST['Col1'];
    
    foreach($txtbox as $a => $b) 
    
    echo "Nom: $txtbox[$a] , $Col1[$a] <br />"; 
    ?>
    Mon problème c'est que je n'obtiens que la 1er valeur de ma selection multiple. Ma question:
    Comment puis-je faire une boucle par ligne afin de récuperer toutes mes valeurs de $Col1 ? puis faire un reset value pour récuperer à nouveau les valeurs pour la ligne suivante ? (foreach($txtbox))

    Ex:
    Nom : Didier, Valeur 1, Valeur 2
    Nom : Jean-Claude, Valeur 2, Valeur 4

    Il peut avoir autant de ligne qu'en souhaite, donc txtbox & Col1 peuvent être 2 comme 100 ...

    D'avance merci pour votre aide.

  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
    Ton premier code, meme s'il fonctionne, n'est déjà pas bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php 
    foreach ($_POST['nom'] as $value) {
       echo "Nom: $value <br />";
    }
    ?>
    Ensuite il faut que tu aies un index commun entre chaque champ input et chaque liste déroulante associée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo '<input type="text" name="nom[' . $i . ']" />';
    echo '<select name="col[' $i . '][]" size="4" multiple >';
    Ce qui nous donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php 
    foreach ($_POST['nom'] as $i=>$nom) {
    echo "Nom: $nom<br />";
    foreach ($_POST['col'][$i] as $col) {
       echo "Col: $col<br />";
    }
    }
    ?>

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour ton message.

    J'ai réctifié le 1er code, ça marche toujours, si tu dis que c'est la façon correcte de faire le code, je te crois

    En se qui concerne la 2ieme partie, et pour ajouter l'index, il faut faire cela dans mon <table> ... </table>, est-ce correcte? l'autre question, la page de ma table est en html, le code ci-dessus est en php... La question va de sois

    Voici le lien sur la page test, tu peux cliquer sur envoyer et tu verras les résultats: http://lebreak.3e-consultancy-soluti...nde/index.html

    Encore merci pour ton aide.

    Bàt

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Gérant
    Inscrit en
    Mars 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 23
    Points : 25
    Points
    25
    Par défaut
    Si j'ai bien compris ton problème voilà ce qu'il faut que tu fasses:

    A chaque nouvelle ligne que tu crées il faut que ta colonne de select multiple porte un autre nom. exemple :
    *1° ligne: nom[] et col0[]
    *2° ligne: nom[] et col1[]
    *3° ligne: nom[] et col2[]

    Après tu les exploite de la façon suivante en php:
    (j'utilise $_REQUEST pour récupérer ma variable car normalement l'option register_globals doit être fixée à "off" par soucis de sécurisation de ton code)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach($_REQUEST['nom'] as $key=>$nom){
    echo 'Nom: '.$nom.' => Commande: ';
    foreach($_REQUEST['col'.$key] as $choice){
    echo $choice.',';
    }
    echo '<br/>';
    }
    Je n'ai pas testé le code mais je ne pense pas m'être trompé. ^^

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    En effet, je penses que c'est la meilleure solution à faire, mais, je ne sais pas comment faire "incrémenter" le nom dans mon code HTML. quelqu'un à une idée ?

    Vu que c'est ajout et suppression des lignes automatiqueent par l'utilisateur, cela doit se faire d'une manière automatique "le nom" aussi.

    D'avance merci pour l'aide.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Gérant
    Inscrit en
    Mars 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 23
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par adoziad Voir le message
    En effet, je penses que c'est la meilleure solution à faire, mais, je ne sais pas comment faire "incrémenter" le nom dans mon code HTML. quelqu'un à une idée ?

    Vu que c'est ajout et suppression des lignes automatiqueent par l'utilisateur, cela doit se faire d'une manière automatique "le nom" aussi.

    D'avance merci pour l'aide.
    Vu que tu utilises javascript pour générer une nouvelle ligne il te faut rajouter une variable "globale" à ton script qui mémorise le nombre de lignes et tu concatène ce chiffre au nom de ton champ.

    Exemple de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nouvelElement.setAttribute('name','col'+counter+'[]');
    counter++;

Discussions similaires

  1. [1.x] Récupération des valeurs sectionnées d'un select multiple
    Par jemele dans le forum Symfony
    Réponses: 6
    Dernier message: 20/06/2008, 12h21
  2. [MySQL] Utilisation des valeur choix multiple pour executer une requete une valeur a la fois
    Par guigui69 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/12/2007, 16h43
  3. Récupération des valeurs select multiple sans sélection
    Par akara dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 17/07/2007, 19h10
  4. [PHP-JS] Récupération des valeurs des champs
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 08/06/2007, 13h19
  5. [SQL] Problème de récupération des valeurs d'une liste multiple en php
    Par BOLARD dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/05/2006, 00h29

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