Vérifier si un checkbox est coché ?

Vérifier si un checkbox est coché ? - PHP - Programmation

Marsh Posté le 05-08-2007 à 18:10:01    

Salut,
 
J'ai fait un formulaire dans une page HTML. Celui ci renvoi le contenu vers un script PHP.
Ce script PHP vérifie si les champs sont rempli, puis les poste dans un mail.
 
Mon prb, jusque là ce sont des champs de texte, et il faut que je vérifie si un checkbox a été coché, mais je ne vois pas comment faire.
J'ai désactivé la vérification de ce champ pour voir ce qui est envoyé dans le mail (un "checked" par exemple) pour ensuite le mettre dans le code de la vérification, mais je ne reçois rien, c'est vide.
 
J'ai utilisé ce code :
 
http://www.siteduzero.com/tuto-3-1 [...] -site.html
 
Exemple de vérification de champ rempli :
 

Code :
  1. // On verifie si il y a un message
  2. elseif (trim($message)=="" )
  3. {
  4.         echo "Y'en a marre des messages vide !";
  5. }


 
 
Même si je coche la case, ça me dit bloque.
 
Quelqu'un a une idée ?  [:groody]  
 
 :jap:


---------------
Vidéo Concorde Air France | www.kiva.org
Reply

Marsh Posté le 05-08-2007 à 18:10:01   

Reply

Marsh Posté le 05-08-2007 à 18:17:25    

la valeur d'une checkbox n'est envoyée au serveur que si la checkbox est cochée. donc faut juste que tu vérifie que tu as une valeur pour $_POST['checkbox']

Reply

Marsh Posté le 05-08-2007 à 18:28:08    

Je ne comprends pas ce qu'il faut donc faire.
Suite à ton msg, j'ai quand même eu l'idée d'ajouter un ! à :
 
elseif (!trim($message)=="" )
 
Là, effet inverse, que ce soit coché ou non, le message est envoyé.


---------------
Vidéo Concorde Air France | www.kiva.org
Reply

Marsh Posté le 05-08-2007 à 19:32:00    

Le PHP vérifie qu'une checkbox est cochée seulement après envoi du formulaire.
Dans ce cas tu testes l'existence de l'identifiant de ta checkbox (id = '...') dans les variables passées au travers du formulaire ($_POST['...']).
 
Cela donne :
 

Code :
  1. if (isset($_POST['mon_identifiant_de_checkbox'])) {
  2.   echo 'La checkbox est cochée';
  3. }
  4. else {
  5.   echo 'La checkbox n\'est pas cochée';
  6. }


 
Si tu souhaites intercepter le cochage au moment où il se fait, il te faut passer par le langage Javascript.


Message édité par CyberDenix le 05-08-2007 à 19:35:13

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 05-08-2007 à 19:35:21    

Ok, merci.
Donc dans mon cas, il vaut mieux utilise javascript.
 
Aurais-tu une piste pour un bon script ? (pour afficher un popup)


---------------
Vidéo Concorde Air France | www.kiva.org
Reply

Marsh Posté le 05-08-2007 à 20:33:46    

Poste un autre sujet dans la section Javascript !
Mais en gros, cela donnerait :
 

Code :
  1. <head>
  2.   <script ...>
  3.     function ma_fonction() {
  4.       if (getElementById('mon_id').value == ... ) {
  5.          ...
  6.       }
  7.     }
  8.   </script>
  9. </head>
  10. <body>
  11.   <input id = 'mon_id' type = '...' onclick = 'ma_fonction();'>
  12. </body>


 
Donc au clic sur la checkbox un évènement se déclenche, celui-ci appelle ma_fonction() dans laquelle tu peux regarder, par exemple, la valeur de ta ckeckbox ou faire un tas d'autres choses.


Message édité par CyberDenix le 05-08-2007 à 20:34:50

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 05-08-2007 à 21:06:19    

Non mais c'est juste que l'action de ton formulaire est un fichier php ou autre (cgi ?) qui envoie un mail. Ben c'est dans ce fichier là qu'il faut que tu gères le checkbox pas dans le truc qui gère tes mails reçus. Si t'as pas accès, effectivement, javascript pourra résoudre le pb.


---------------
The Rom's, à votre service
Reply

Marsh Posté le 05-08-2007 à 22:22:45    

TheRom_s, j'arrive pas comprendre ( "pas dans le truc qui gère tes mails reçus" c'est pas vraiment clair.. :o )
J'ai décrit ce que j'utilise dès le début, peux-tu regarder et me dire si ça correspond à ce que tu penses ?
 
Pour que ce soit parfait (ressembler aux autres champs), il faudrait qu'une fois validé, le script PHP affiche "vous n'avez pas coché la case".
 
 
CyberDenix, ça me dépasse là, je ne comprends rien de ce que fait ce code.
Est-ce qu'il permet d'afficher un msg quand on valide par le bouton d'envoi du formulaire ?
 
 
En fonction de la réponse de TheRom_s, je lancerai ou non un topic pour du javascript.
 
:jap:


---------------
Vidéo Concorde Air France | www.kiva.org
Reply

Marsh Posté le 05-08-2007 à 22:57:57    

oui j'avais mal lu, le "truc" c'est le script php dont tu parles qui envoie le mail, donc comme t'as dit Kangol dans la première réponse, pas besoin de javascript, il faut tester la valeur de $_POST["le_nom_de_ta_checkbox"] dans le script PHP

Code :
  1. if (isset($_POST["le_nom_de_ta_checkbox"]) && $_POST["le_nom_de_ta_checkbox"] == "la_valeur_que_tu_veux_avoir" ) { // le second test par sécurité
  2.     // le truc à faire si c'est coché ...
  3. }
  4. else {
  5.     // sinon ...
  6. }

dans ton html, vérifie que tu as <input name="le_nom_de_ta_checkbox" type="checkbox" value="la_valeur_que_tu_veux_avoir" />
en option, tu peux ajouter l'attribut checked="checked" si tu veux que ce soit activé par défaut


---------------
The Rom's, à votre service
Reply

Marsh Posté le 05-08-2007 à 23:04:33    

Merci, je regarde ça demain.
:jap:


---------------
Vidéo Concorde Air France | www.kiva.org
Reply

Marsh Posté le 05-08-2007 à 23:04:33   

Reply

Marsh Posté le 06-08-2007 à 09:52:44    

Zut, j'ai une erreur, et j'arrive pas à voir comment la régler.
 
Parse error: syntax error, unexpected T_ELSE in /users/monsite.com/test/mail.php on line 101
 
 
Partout dans le script les vérifications se font par elseif
pour ton exemple, else tout court. Est-ce ça ?
J'ai tenté quelques modifs, sans succès, l'erreur se déplace de ligne en ligne.


---------------
Vidéo Concorde Air France | www.kiva.org
Reply

Marsh Posté le 06-08-2007 à 13:22:18    

Dans un bloc if/elseif/else, le premier test doit être un if et le dernier test doit être un else :
 

Code :
  1. if (...) {
  2.    ...
  3. }
  4. elseif (...) {
  5.   ...
  6. }
  7. elseif (...) {
  8.   ...
  9. }
  10. else {
  11.   ...
  12. }


 
Vérifie également que tu ouvres et fermes bien les parenthèses/accolades et que tu mets un point-virgule à la fin de chaque ligne.


Message édité par CyberDenix le 06-08-2007 à 13:26:25

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 06-08-2007 à 13:33:48    

Merci.
J'ai trouvé, c'était ça qui posait prb :
 
 { // le second test par sécurité
   // le truc à faire si c'est coché ...}
 
 
 
J'ai l'effet inverse de ce que je cherche, le mail est envoyé si la case n'est pas cochée, et bloque si c'est coché.
Je n'arrive pas à décoder le code suffisemment pour m'en sortir [:groody]


---------------
Vidéo Concorde Air France | www.kiva.org
Reply

Marsh Posté le 06-08-2007 à 17:46:55    

ben c'est ton code, on peut pas te dire
 
si tu veux faire des tas de tests pour faire apparaître les erreurs genre
 
if (condition d'erreur 1) { erreur 1 pas de mail }
else if (condition d'erreur 2) { erreur 2 pas de mail }
...
else if (condition d'erreur N) { erreur N pas de mail }
else { ok on envoie le mail }
 
alors la condition à tester pour la checkbox est
 
(!isset($_POST["le_nom_de_ta_checkbox"]) || (isset($_POST["le_nom_de_ta_checkbox"]) && ($_POST["le_nom_de_ta_checkbox"] != "la_valeur_que_tu_veux_avoir" )))
 
dans ce cas, il y a une erreur


---------------
The Rom's, à votre service
Reply

Marsh Posté le 07-08-2007 à 10:47:23    

J'ai compris pour le If, else If, etc. puis else.
 
Mais je n'arrive tjs pas à "lire" / comprendre le code.
Malgré tout, je viens d'essayer ton morceau de code, et ça fonctionne parfaitement !
 
Encore merci à tous, le site est enfin terminé ;)
a+
:jap:


---------------
Vidéo Concorde Air France | www.kiva.org
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed