Bouton radio:un unique attribut name en hmtl et plusieurs en php

KikiOnRoad -  
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je code actuellement un formulaire en html et php. Voilà mon souci : je voudrais que tous mes radios aient le même attribut name pour qu'une seule option puisse être cochée, seulement si je veux que je mon code php fonctionne chacun de mes radios est forcé d'avoir un name différent. Une idée ?

HTML :
<form id="quizz" action="type_tut.php" method="POST">

<p class="question">1. ...</p>
<ul class="answers">
<input type="radio" name="reponse1a" value="a" id="q1a"><label for="q1a">...</label><br>
<input type="radio" name="reponse1b" value="b" id="q1b"><label for="q1b">...</label><br>
<input type="radio" name="reponse1c" value="c" id="q1c"><label for="q1c">...</label><br>
<input type="radio" name="reponse1d" value="d" id="q1d"><label for="q1d">...</label><br>
</ul>

<input name="validation" value="Valider son quizz" type="submit" id="valider"></input>

</form>


PHP :
if(isset($_POST['reponse1a'])){

$reponse1a=$_POST['reponse1a'];
$nbr_a=$nbr_a+1;

}
if(isset($_POST['reponse1b'])){

$reponse1b=$_POST['reponse1b'];
$nbr_b=$nbr_b+1;

}
if(isset($_POST['reponse1c'])){

$reponse1c=$_POST['reponse1c'];
$nbr_c=$nbr_c+1;

}
if(isset($_POST['reponse1d'])){

$reponse1d=$_POST['reponse1d'];


$nbr_d=$nbr_d+1;
}


Merci par avance !
A voir également:

1 réponse

ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
'lut, tu peux nommer toutes tes radios avec le même nom, au final, seulement la valeur sélectionnée sera envoyée sous ce nom (dans mon exemple ci-dessous "reponse1").
Et je te conseille très fortement d'utiliser un tableau (associatif s'il le faut) plutôt que de nombreuses variables:
$nbr = array(
    "a" => 0,
    "b" => 0,
    "c" => 0,
    "d" => 0
);
if (isset($_POST['reponse1'])) {
    $lettre = $_POST['reponse1'];
    if (isset($nbr[$lettre]) {
        $nbr[$lettre]++; // le ++ incrémente la valeur de 1, ça équivaut à $nbr[$lettre] = $nbr[$lettre] + 1;
    }
}
0
KikiOnRoad
 
Merci de ta réponse, mais je crois que ça ne fonctionne pas pour mon problème, ou alors j'ai pas compris :D.
Mon formulaire comporte plusieurs questions, chacune ayant 4 réponses possibles (a, b, c et d). Ce que je veux c'est avoir le nombre de a, de b, de c et de d cochés à la fin du formulaire. Le code php de mon sujet initial correspond uniquement à celui de ma première question. Voilà ce qu'il donne pour deux questions :

if(isset($_POST['reponse1a'])){
$reponse1a=$_POST['reponse1a'];
$nbr_a=$nbr_a+1;
}
if(isset($_POST['reponse1b'])){
$reponse1b=$_POST['reponse1b'];
$nbr_b=$nbr_b+1;
}
if(isset($_POST['reponse1c'])){
$reponse1c=$_POST['reponse1c'];
$nbr_c=$nbr_c+1;
}
if(isset($_POST['reponse1d'])){
$reponse1d=$_POST['reponse1d'];
$nbr_d=$nbr_d+1;
}


if(isset($_POST['reponse2a'])){
$reponse2a=$_POST['reponse2a'];
$nbr_a=$nbr_a+1;
}
if(isset($_POST['reponse2b'])){
$reponse2b=$_POST['reponse2b'];
$nbr_b=$nbr_b+1;
}
if(isset($_POST['reponse2c'])){
$reponse2c=$_POST['reponse2c'];
$nbr_c=$nbr_c+1;
}
if(isset($_POST['reponse2d'])){
$reponse2d=$_POST['reponse2d'];
$nbr_d=$nbr_d+1;
}
0
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223 > KikiOnRoad
 
Bah faut juste faire une boucle ;)
for ($q = 1; $q <= 4; $q++) {
    $nomChamp = 'reponse' . $q;
    if (isset($_POST[$nomChamp])) {
        $lettre = $_POST[$nomChamp];
        if (isset($nbr[$lettre]) {
            $nbr[$lettre]++; // le ++ incrémente la valeur de 1, ça équivaut à $nbr[$lettre] = $nbr[$lettre] + 1;
        }
    }
}
0