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érer les valeurs de plusieurs cases à cocher ayant le même nom


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut Récupérer les valeurs de plusieurs cases à cocher ayant le même nom
    Salut tout le monde!!!

    Voilà j'ai un petit soucis, dans un de mes formulaire, j'ai des checkbox et des select qui sont généré automatiquement. Tous mes checkbox ont le même nom et pareil pour mes selects.
    par exemple j'ai mes checkbox qui s'appelle "lulu". Quand je vais récupérer la variable post avec php :

    $recup = $_POST['lulu'];

    est ce que $recup sera un tableau avec l'ensemble des checkbox?
    Si c'est le cas, vu que mes checkbox ont des value qui correspondeà des idé"entoifiants numérique non consécutif comment faire pour parcourir le tableau de checkbox et récupérer ceux qui sont checkés?

    Pareil pour les select.

    Si vous avez des idées, n'hésitez pas je suis preneur.

    Merci.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Citation Envoyé par danathane
    est ce que $recup sera un tableau avec l'ensemble des checkbox?
    Tout dépend de la manière dont sont déclarés vos champs. S'ils utilisent la notation "tableau" alors oui. Exemple :
    Code X : 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
    <form method="post">
        <input type="checkbox" name="lulu[]" value="A" /> A
        <br />
        <input type="checkbox" name="lulu[]" value="B" /> B
        <br />
        <input type="checkbox" name="lulu[]" value="C" /> C
        <br />
        <!-- ... -->
        <input type="submit" value="Valider" />
    </form>
    
    <?php
    if (isset($_POST['lulu'])) {
        var_dump($_POST['lulu']);
    }
    ?>

    Citation Envoyé par danathane
    Si c'est le cas, vu que mes checkbox ont des value qui correspondeà des idé"entoifiants numérique non consécutif comment faire pour parcourir le tableau de checkbox et récupérer ceux qui sont checkés?
    Une itération de type foreach permet de récupérer à la fois la clé et la valeur. C'est une méthode parmi d'autres.

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut
    OK merci julp.
    J'aurais juste une dernière question. Avec le foreach, est ce que c'est possible de récupérer le value? parce que là je vois pas trop comment le récupérer. à moins de faire peut etre un current($lulu). mais je suis pas très sur.

    Merci pour ton aide et celle des autres.

  4. #4
    Membre éclairé Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Points : 779
    Points
    779
    Par défaut
    Hello,


    Ceci devrait fontionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while (list($key, $value) = each($_POST['lulu'])) {
        echo "Clé : $key; Valeur : $value<br />\n";
    }
    ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $i=0;
    $a = $_POST['lulu'];
    foreach ($a as $v) {
        echo "\$a[$i] => $v.\n";
        $i++;
    }
    @+
    cadou
    LMN24 - Site d'actualité internationale multilingue
    http://www.lmn24.com

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut
    Salut salut!!
    Je comprend pas trop l'histoire de $key, $value.
    $Key correspond au champ value? et $ value permet de savoir si le checkbox a été coché c'est bien ca?
    je dois quire que je suis pas sur du tout d'avoir tout capté là.
    Désolé si ma quetsion est toute bête mais bon je préfère quand meme être sûr.

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    En PHP vous n'obtiendrez que les checkbox qui ont été cochées par l'utilisateur. Reprenons notre formulaire où j'ai forcé la valeur des indices (1, 2 et 3) - ils peuvent correspondre à la valeur de votre clé primaire pour identifier ce qui doit être traité ou non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <form method="post">
        <input type="checkbox" name="lulu[1]" value="A" /> A
        <br />
        <input type="checkbox" name="lulu[2]" value="B" /> B
        <br />
        <input type="checkbox" name="lulu[3]" value="C" /> C
        <br />
        <!-- ... -->
        <input type="submit" value="Valider" />
    </form>
    Admettons que l'utilisateur ait coché A et C, mon tableau $_POST donnera pour cette partie :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'lulu' => Array(
        '1' => 'A',
        '3' => 'C'
    )
    1 et 3 sont donc les clés et A et C les valeurs qui leur sont respectivement associées.

    Pour le parcours du résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (isset($_POST['lulu']) && is_array($_POST['lulu'])) {
        echo 'Vous avez choisi :<ul>'
        foreach ($_POST['lulu'] as $key => $value) {
            printf('<li>%s : %s</li>', $key, $value);
        }
        echo '</ul>';
    }
    Si vous n'utilisez pas ces indices dans votre formulaire alors la clé ne vous sera pas utile (forme tableau par défaut, le premier sera 0, le deuxième 1, ...). On peut alors se passer de récupérer la clé comme le permet foreach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (isset($_POST['lulu']) && is_array($_POST['lulu'])) {
        echo 'Vous avez choisi :<ul>'
        foreach ($_POST['lulu'] as $value) {
            printf('<li>%s</li>', $value);
        }
        echo '</ul>';
    }
    N'hésitez pas à tester ce sera surement plus clair.

    En savoir plus sur foreach.

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut
    Okay, je commence à voir un peu plus clair là.
    merci mille fois pour ces explications.

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut
    Re bonjour tout le monde.
    J'ai encore une petite quetsion pour vous

    Toujours avec mes histoire de slecet qui portent le meme nom.
    Si je fais un select à choix multible
    est ce que je peux récupérer les différent choix dans chaque select de cette manière :
    foreach($_POST['mon champ'] as^$tab_value){

    foreach($tab_value as $value){

    //intrcutions.

    }

    }


    là mon $value correspondra au différent choix que j'aurais fait dans mon select à choix multiple, et ce pour chaque select.

    Est ce que c'est bien ca?

    merci du coup de main par avance

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Citation Envoyé par danathane
    foreach($_POST['mon champ'] as^$tab_value){

    foreach($tab_value as $value){

    //intrcutions.

    }

    }
    A priori oui (mis à part le ^ de trop et l'espace dans le nom du champ), mais comment faites-vous pour identifier la liste ? Vous n'avez pas ce besoin ?

  10. #10
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut
    Coment ca "comment faites vous pour identifier la liste?" je dois dire que je ne comprend pas bien là.

Discussions similaires

  1. [Tableaux] Recuperer les valeurs de plusieurs checkbox
    Par tomenbois dans le forum Langage
    Réponses: 9
    Dernier message: 18/03/2008, 12h23
  2. Récupere les valeurs de plusieurs "onchange"
    Par Paulux1 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/02/2008, 18h24
  3. Réponses: 5
    Dernier message: 18/02/2008, 16h11
  4. Réponses: 7
    Dernier message: 30/01/2008, 17h39
  5. Réponses: 2
    Dernier message: 24/08/2007, 14h25

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