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 :

bouton radio , valeur indicée


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 66
    Par défaut bouton radio , valeur indicée
    Bonsoir,

    Je n'arrive pas à récupérer le choix effectué à partir d'un bouton radio dans un form en boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form method="get" action="tocan_truiteR.php" >
    <? for ($j=1; $j<11; $j++)
    	{ ?> 
      	Tocan:	<INPUT type=radio name="$choix[$j]" value="tocan">
    .................
    pour l'utiliser sur la page action:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for ($j=1; $j<11; $j++)
    	{ 
    		$choix[$j]=$_GET['$choix[$j]'];
    		print("<p><img src='$imgligne[$j]' > Vous avez proposé '$choix[$j]' ");
     
    	 } ?>
    Merci pour votre aide
    alain

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Dans l'intitulé tu mets ceci : bouton radio , valeur indicée
    La solution est théoriquement là, mais ce n'est pas ce que fait le code.

    Dans le code la valeur est la même à chaque tour de boucle : tocan
    Puis c'est le nom de chaque groupe de bouton radio qui change (qui est indicé).
    Ce n'est pas correcte, et tu dois d'ailleurs t'apercevoir qui'il est impossible de faire 1 choix parmi les propositions.

    Pour rappel, un groupe de boutons radios à pour but de proposer 1 seul et unique choix à l'utilisateur parmi plusieurs propositions.
    Ca donne ceci par exemple : -> 1 seule valeur sera retournée (rouge ou vert ou orange)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="radio" name="couleur" value="rouge" />
    <input type="radio" name="couleur" value="vert" />
    <input type="radio" name="couleur" value="orange" />

    - Est-ce que tu as 1 seul groupe de boutons radios pour plusieurs choix ?
    1 seule et unique valeur sera à récupérer (pas besoin de boucle ici)

    - Ou alors est-ce que tu as plusieurs groupes de boutons radios différents qui ont leurs propres choix (plusieurs là aussi) ?
    Il y aura ici autant de valeurs à récupérer qu'il y aura de groupes de boutons radio. Ici une boucle peut être utile (pas forcément).


    Fait le point la dessus.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 66
    Par défaut
    Le form présente 10 images avec, pour chacune 2 boutons radio :truite ou tocan.
    Il va y avoir 10 choix (truite ou tocan) à traiter. Dans mon idée, le choix N°1, le choix N°2... J'ai donc indicé [$j] de 1 à 10... mais je ne récupère pas la valeur de choix[$j]
    (et l'ouverture de la pêche, c'est samedi )

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Je penses que tu n'as pas compris le principe de fonctionnement d'un groupe de boutons radios (à ne pas confondre avec celui d'un checkbox, ça n'a rien à voir).

    Il va y avoir 10 choix (truite ou tocan) à traiter. Dans mon idée, le choix N°1, le choix N°2... J'ai donc indicé [$j] de 1 à 10... mais je ne récupère pas la valeur de choix[$j]
    Ton code avait des erreurs, donc il demandait de faire des corrections selon les explications et exemples que je t'ai mis.
    Si, même en faisant des modifs tu n'obtiens pas ce que tu veux, alors faut re-poster le nouveau code qu'on voit où ça n'irait pas.

    Si tu ne modifie rien, alors le code ne va pas se corriger tout seul par le Saint esprit.

    Il n'y a pas à faire de boucle pour récupérer les 2 valeurs pour la simple raison qu'un groupe de bouton radio renvoie 1 seule et unique valeur.

    Donc si dans ton formulaire il y a 2 groupes de boutons radios, 2 valeurs seront renvoyées, et comme les noms des boutons sont connus à l'avance (truite, tocan), il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $truite = $_POST['truite']; // Vaut la valeur choisie parmi les truites
    $tocan = $_POST['tocan']; // Vaut la valeur choisie parmi les tocans
    Pour le code Html, admettons qu'on ait un tableau pour la listes de choix pour les truites et un autre tableau pour des tocans.
    Exemple :
    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
    <?php
    $truites = array('truite1', 'truite2', 'truite3');
    $tocans = array('tocan1', 'tocan2', 'tocan3');
     
    // Liste des truites
    echo 'Veuillez choisir 1 truite parmi cette liste de choix :<br />';
    for ($i = 0; $i < 2; $i++) {
        echo '<input type="radio" name="truite" value="'.$truites[$i].'" />'.$truites[$i].'<br />';
    }
     
    // Liste des tocans
    echo 'Veuillez choisir 1 tocan parmi cette liste de choix :<br />';
    for ($i = 0; $i < 2; $i++) {
        echo '<input type="radio" name="tocan" value="'.$tocans[$i].'" />'.$tocans[$i].'<br />';
    }
    ?>
    (pour récupérer les 2 choix (truite et tocan), c'est le code plus haut)

    Bref. Il faut que le nom (attribut name) soit identique (le même) pour tous les choix de chaque groupe de bouton radio, c'est la valeur qui change.
    Puis 1 seule valeur par groupe de bouton radio sera retournée.


    Fais des essais simples/basiques, sans boucles, etc ... pour comprendre comment ça fonctionne au besoin.


    Si dans ton fonctionnement il doit être possible 1 ou plusieurs choix parmi une liste, alors ce n'est pas des groupes de boutons radios qu'il faudrait, mais des checkbox.
    Ca dépend ce que tu souhaites faire.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 66
    Par défaut

    Très basique, ça marche :
    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
     
    ### page du form #######
    <form method="GET" action="trait.php" >
    Tocan:	<INPUT type=radio name="choix" value="tocan">
    Truite:	<INPUT type=radio name="choix" value="truite">
    <input type="submit" value="Envoyer">
     
    </form>
    ______________________________________________________
    ### page 'trait.php'#####
     
    <?php
    $choix=$_GET['choix'];
    		print("<p> Vous avez proposé '$choix' ");
    ?>
    _____________________________________________________
     
    Mais comme j'affiche 10 images avec pour chacune le  choix entre truite et tocan,  je mets une boucle dans le form 
     
    <form method="GET" action="trait.php" >
         for ($j =1;$j<11;$j++) {
           ( affichage image, et récup des données ça marche)
           Tocan:<INPUT type=radio name="choix" value="tocan">
           Truite:	<INPUT type=radio name="choix" value="truite">
         }
    <input type="submit" value="Envoyer">
     
    </form>
    Donc, pour chaque image "choix" prendra la valeur "truite" ou "tocan", ça fait dix groupes de deux boutons, groupes dont Il faut changer le nom pour chaque image. et je pensais utiliser choix[$j] pour image[$j] afin de récupérer la valeur avec $_GET[$choix[$j]]...

  6. #6
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Donc, pour chaque image "choix" prendra la valeur "truite" ou "tocan", ça fait dix groupes de deux boutons, groupes dont Il faut changer le nom pour chaque image. et je pensais utiliser choix[$j] pour image[$j] afin de récupérer la valeur avec $_GET[$choix[$j]]...
    Alors ça donnerait quelque chose comme ça, si j'ai bien compris.
    En 1er il y a une liste de 10 poissons différents où un choix doit être fait si c'est une truite ou un tocan.

    Admettons un tableau avec 10 valeurs (10 poissons différents).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $liste_poissons = array('poisson1', 'poisson2', 'poisson3', 'poisson4', 'poisson5', 'poisson6', 'poisson7', 'poisson8', 'poisson9', 'poisson10');
     
    // Liste des poissons
    foreach ($liste_poissons as $poisson) {
        echo 'Veuillez faire un choix pour ce poisson '.$poisson.' :<br />';
        echo '<input type="radio" name="poissons['.$poisson.']" value="truite" />Truite<br />';
        echo '<input type="radio" name="poissons['.$poisson.']" value="tocan" />Tocan<br />';
    }
    ?>
    Il suffit de faire une boucle sur l'élément "poissons" pour obtenir les 10 choix effectués : (truite ou tocan)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    if (isset($_POST['poissons'])) {
        foreach ($_POST['poissons'] as $key => $poisson) {
            $liste_poissons[$key] = $poisson; // Valeur : truite ou tocan
        }
    }
    ?>
    (une boucle foreach est souvent plus pratique que for)
    Chaque clé (ou indice) de $liste_poissons est le nom du poisson (poisson1, poisson2, etc ...), et la valeur truite ou tocan.
    (c'est la même structure que les groupes de boutons radios).

    A chaque image (donc pour 1 image) il y a à chaque fois 1 choix à faire parmi 2 propositions : truite ou tocan.
    Concrètement :
    1 image -> 2 choix
    ... etc pour les 10 ...

    Tout dépend ce que tu souhaite faire comme présentation, faut juste éviter de provoquer une erreur à cause de ça.
    Les images sont plus quelque chose d'accessoires que quelque chose de fonctionnel.
    Disons il faut éviter que les noms des poissons soient trop "exotiques" (caractère spéciaux, comme des espaces, ", ', <, >, etc ...), sinon faudra faire un peu différemment.


    J'espère ne pas faire d'erreurs (pas testé), et surtout compris.

Discussions similaires

  1. recupérer la valeur d'un bouton radio
    Par ericmart dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 19/05/2008, 15h42
  2. Bouton radio : valeur affichée != valeur interprétée
    Par untitled96 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/08/2007, 16h54
  3. Valeur d'un groupe de boutons radio non sélectionnés ??
    Par michaelbob dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 04/11/2005, 16h27
  4. Bouton radio : récupérer la valeur du bouton avec selectedIn
    Par djodjo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/08/2005, 12h07
  5. [JSP] passer en parametre valeur d un bouton radio
    Par logica dans le forum Servlets/JSP
    Réponses: 19
    Dernier message: 13/05/2005, 14h09

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