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

Fermé
KikiOnRoad - Modifié par KikiOnRoad le 30/05/2015 à 14:53
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 30 mai 2015 à 21:40
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 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
30 mai 2015 à 16:52
'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
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 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225 > KikiOnRoad
30 mai 2015 à 21:40
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