|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : août 2010 Messages : 265 ![]() |
Bonjour,
J'ai un problème Dans ma base de donnée pour sauver l'état d'une checkbox j'ai mis le champ de la checkbox à 1 si elle est cochée , à 0 si elle ne l'est pas. Comme ceci: Code :
$bonnereponse1 = isset($_POST["cases1"]) ? 1 : 0; Je fais Code :
<input type="checkbox" name="cases1" value"<?php echo $row_Recordset3bis['bonnereponse1']; ?>" /> Problème donc avec ça : Code :
<input type="checkbox" name="cases1" value"<?php echo $row_Recordset3bis['bonnereponse1']; ?>" /> Quelqu'un sait d'ou vient mon erreur svp? |
|
|
00
|
|
|
#2 | ||
|
Membre régulier
![]() Inscription : juin 2004 Messages : 66 ![]() |
C'est parce qu'une checkbox ne définit pas son état coché/décoché via l'attribut "value".
Code :
__________________
Programmation Web - PHP, MySQL, JavaScript, etc. |
||
|
10
|
|
|
#3 |
|
Membre régulier
![]() Inscription : août 2010 Messages : 265 ![]() |
Merci pour ta réponse rapide, ça marche en effet, mais je comprends pas trop ta syntaxe, t'as le temps de me l'expliquer stp en quelques mots ?
Merci bcp |
|
|
00
|
|
|
#4 | ||
|
Membre régulier
![]() Inscription : juin 2004 Messages : 66 ![]() |
Pour le code PHP ?
C'est un opérateur ternaire : Le la "condition" est vrai, c'est opération à gauche des deux points qui est traitée, sinon c'est celle de droite. On peut même imbriqué les opérateurs : Code :
En remplaçant par une structure IF : Code :
<input type="checkbox" name="cases1" value="1"<?php if ($row_Recordset3bis['bonnereponse1']) echo ' checked="checked"'; ?>" />
__________________
Programmation Web - PHP, MySQL, JavaScript, etc. |
||
|
10
|
|
|
#5 | ||
|
Membre régulier
![]() Inscription : août 2010 Messages : 265 ![]() |
Je me permet de vous redemander votre aide car j'ai un problème lors d'une requête concernant des checkbox...
Si une checkbox est cochée, je souhaite envoyer 1 en BDD, autrement 0... La requête se passe bien pour les autres champs mais pour les checkbox j'ai toujours 0 qui est transmis, quelqu'un sait pourquoi? Voici mon code: Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Membre régulier
![]() Inscription : juin 2004 Messages : 66 ![]() |
Une checkbox doit posséder un attribut "value" avec une valeur (dans ton cas : 1).
Par contre si la checkbox n'est pas cochée, rien n'apparait dans la variable $_POST. Donc, pour savoir si elle est cochée, tu peux faire : Code :
__________________
Programmation Web - PHP, MySQL, JavaScript, etc. |
||
|
10
|
|
|
#7 |
|
Membre régulier
![]() Inscription : août 2010 Messages : 265 ![]() |
J'ai un peu de mal à visualiser là tu peux pas me montrer dans mon code l'endroit ou mettre ça ... je comprend pas trop là désolé
Merci pour ton aide! |
|
|
00
|
|
|
#8 | ||||
|
Membre régulier
![]() Inscription : juin 2004 Messages : 66 ![]() |
Je te montre juste un exemple :
Code :
Code :
Mais tu mélanges JavaScript et PHP, donc ça ne risque pas de fonctionner (code PHP dans un "window.confirm"). Il faudrait revoir les cours, parce que tu n'as pas bien saisie le fonctionnement de PHP (entre autre).
__________________
Programmation Web - PHP, MySQL, JavaScript, etc. |
||||
|
10
|
|
|
#9 |
|
Membre régulier
![]() Inscription : août 2010 Messages : 265 ![]() |
Ouais je sais c'est pas terrible d'avoir mis la requête dans un window.confirm, je vais faire la requête dans une autre page PHP séparée et je vais voir si je m'en sors ...
ça ne marche pas effectivement ... |
|
|
00
|
|
|
#10 | ||
|
Membre régulier
![]() Inscription : août 2010 Messages : 265 ![]() |
Bon ben j'ai séparé le tout ...
Dans la page PHP 1 j'ai : Code :
<input type="checkbox" name="cb1" value="1"> et la page 2 avec la requête: Code :
|
||
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 706 ![]() |
Salut
A mon avis, il serait bon de revoir un peu la création du formulaire en exploitant des tableaux coté HTML. Exemple : Code :
Une boucle foreach permettra de récupérer tour à tour chaque checkbox (s'il y en a), et leur valeur permettra de faire une comparaison par exemple. Peut être qu'il faudrait aussi revoir la conception de cette Bdd pour le questionnaire, car au moins dans cette table "reponse", j'y vois un (énorme) phénomène de répétition : CHK1, CHK2, ... CHK5 Normalement, quand une table contient n ... valeurs possibles il faut la découper en 2. A priori, pour 1 question posée il y a plusieurs réponses possibles (n réponses). Donc -> table "reponse" (1 ligne = 1 ID) => table reponses_possibles (toutes les réponses par lignes pour 1). Ne seront enregistrés QUE les réponses obtenues (cochées). Par déduction, on peut savoir les possibilités non répondues/ non cochées, donc quelque part il n'est pas utile de les enregistrer. Le gros avantage de procéder ainsi, c'est que s'il y a plusieurs questionnaires et que chaque questionnaires ont des nombres de réponses possible variables, la Bdd pourra représenter ça de manière exacte. Genre : questionnaire 1 -> 3 réponses possibles maximum questionnaire 2 -> 5 réponses max ... etc ... Faudrait peut être voir un peu tout ça.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||
|
|
10
|
|
|
#12 |
|
Membre régulier
![]() Inscription : août 2010 Messages : 265 ![]() |
Merci d'avoir pris le temps de me donner ces conseils que je garde sous le main et je vais essayer ça dès que j'ai du temps libre!
Par contre concernant mon problème tu vois l'erreur que je puisse rectifier? parce que là tout rechanger avec ta méthode me prendrait trop de temps et j'aimerais bien savoir pourquoi ça marche pas de toute manière ... normalement avec ça : Code :
$bonnereponse1 = isset($_POST["cb1"]) ? 1 : 0; Grand merci à toi encore une fois
|
|
|
00
|
|
|
#13 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 706 ![]() |
Le truc c'est que je n'est pas tout suivi
Mais fais un print_r($_POST) dans ta page pour voir ce qu'il contient. Code :
Ton formulaire, c'est en GET ou POST ? Mais petite parenthèse quand même, c'est qu'il faut valider le formulaire pour qu'après coup les données soient envoyées et stockées dans le $_POST. Donc ça veut dire que lorsqu'on demande cette page la 1ère fois (avant validation), il est normal que $_POST ne contient rien. Pas sûr que ce soit ça ton problème.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||
|
|
00
|
|
|
#14 | ||
|
Membre régulier
![]() Inscription : août 2010 Messages : 265 ![]() |
Ouais il envoie rien car j'ai 0 à tout les champs CHK1,CHK2...
Moi je veux 1 quand la checkbox est cochée et 0 si elle est vide... de toute manière ça m'arrange car le POST ne contiendra rien si la checkbox n'est pas cochée donc il mettra 0 ... le $_GET['questionnaire'], c'est une variable que j'ai transmise par url dans la page PHP précente mais ça , ça fonctionne bien dans la requête, c'est juste les champs CHK qui merdent car tout le temps 0 , même quand j'ai coché une/plusieurs checkbox... la validation j'ai ça : Code :
|
||
|
|
00
|
|
|
#15 | |||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 706 ![]() |
Citation:
J'avais pas vu ça d'ailleurs. ![]() Il faut un formulaire + submit Juste pour info, prospecte dans ce sens là si tu veux faire une vérif du formulaire en JS avant validation : Code :
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|||
|
|
10
|
|
|
#16 |
|
Membre régulier
![]() Inscription : août 2010 Messages : 265 ![]() |
C'était ça... pf
Merci pour ta disponibilité ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com