Enregistrer chaque bouton radio dans un champ de l

Résolu/Fermé
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 27 févr. 2018 à 18:11
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 28 févr. 2018 à 09:26
Bonjour,

J'essaie d'enregistrer chaque bouton radio dans un champ de la table SI celui-ci est activé.
Par exemple :
Je coche la valeur "Option 1" et l'édit se fera uniquement dans le champ Vote_01
Je coche la valeur "Option 2" et l'édit se fera uniquement dans le champ Vote_02


Pouvez-vous me filer un coup de main svp ?

Voici ma page d'accueil :
<form action="validation.php" method="POST" name="Form" autocomplete="OFF" enctype="multipart/form-data">
<input type="hidden" name="NumId" value="<?php echo $dataFr['NumId']; ?>" />
<input type="hidden" name="action" value="send" />
	
<input type="radio" name="Option" id="Fr_Vote_1" value="1"> Option 1
<input type="radio" name="Option" id="Fr_Vote_2" value="1"> option 2

<button>Valider</button>
</form>


et ma page de validation :
<?php
$NumId		= $_POST["NumId"];
$Fr_Vote_1 	= isset($_POST["Fr_Vote_1"]) ? "1" : "0";
$Fr_Vote_2 	= isset($_POST["Fr_Vote_2"]) ? "1" : "0";

$req_fr = $pdo->prepare("UPDATE tb_aa_poll SET Vote_01=Vote_01 + :Fr_Vote_1, Vote_02=Vote_02 + :Fr_Vote_1 WHERE NumId = $NumId ");
$req_fr->bindParam(":Fr_Vote_1", 	$Fr_Vote_1);
$req_fr->bindParam(":Fr_Vote_2", 	$Fr_Vote_2);
$req_fr->execute();
?>

A voir également:

2 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
28 févr. 2018 à 08:53
Bonjour,

Ce code-là n'est pas cohérent :

<input type="radio" name="Option" id="Fr_Vote_1" value="1"> Option 1
<input type="radio" name="Option" id="Fr_Vote_2" value="1"> option 2

$Fr_Vote_1 	= isset($_POST["Fr_Vote_1"]) ? "1" : "0";
$Fr_Vote_2 	= isset($_POST["Fr_Vote_2"]) ? "1" : "0";


En effet, les champs du formulaire sont transmis par leur "name" et pas par leur "id", et c'est le "value" du bouton sélectionné qui est transmis.
Comme tes deux boutons ont le même "value", dans tous les cas tu vas te retrouver avec $_POST['Option'] == 1, ce qui ne te permet pas de savoir quel bouton a été cliqué.
Pour différencier tes deux boutons, c'est le champ "value" qui doit varier, par exemple comme ceci :
<input type="radio" name="Option" id="Fr_Vote_1" value="1"> Option 1
<input type="radio" name="Option" id="Fr_Vote_2" value="2"> option 2

$Fr_Vote_1 	= isset($_POST['Option']) && $_POST['Option'] == 1 ? "1" : "0";
$Fr_Vote_2 	= isset($_POST['Option']) && $_POST['Option'] == 2 ? "1" : "0";


Xavier
1
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
28 févr. 2018 à 09:26
Merci beaucoup Xavier, ta réponse a résolu le problème.
Merci à yg_be pour ton aide.
0
yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
27 févr. 2018 à 19:07
bonsoir, bien que tu ne l'écrives pas, je crois deviner que ton code ne fait pas exactement ce que tu souhaites qu'il fasse.
que souhaites-tu changer dans son comportement (que tu ne décris pas)? 
0
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
27 févr. 2018 à 21:51
Heuuu... si tu le dis :D
Je souhaite que si
<input type="radio" name="Option" id="Fr_Vote_1" value="1">
est cochée, 1 s'accumule à la valeur Vote_01 de la table sinon 1 s'accumule à la valeur Vote_02 de la table.
C'est un système de vote que j'essaie de mettre en place et c'est la seule option qui me manque.
$Fr_Vote_1 = isset($_POST["Fr_Vote_1"]) ? "1" : "0";
n'est pas pris en compte, rien ne s'ajoute à ma table.

Donc en récapitulatif, si je choisis
<input type="radio" name="Option" id="Fr_Vote_1" value="1">
:
Vote_01 = Vote_01=Vote_01 + :Fr_Vote_1

Si je choisi
<input type="radio" name="Option" id="Fr_Vote_2" value="1">
:
Vote_02 = Vote_02=Vote_02 + :Fr_Vote_2
0
yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023
27 févr. 2018 à 23:54
je pense que ton formulaire est mal conçu. je te suggère de faire
print_r($_POST);
au début de ton php, je pense que cela va t'aider à comprendre ce que tu fais.
0