Page 1 sur 1
Case à cocher
Posté : 20 déc. 2021, 23:06
par PPetit
Bonjour à tous,
Je débute dans le PHP et actuellement je construis un formulaire d'enregistrement. Dans ce formulaire, j'ai inclus une case à cocher.
voici le code html du formulaire
Lundi: <input type="checkbox" name="lundi" >
Lorsque je renvoie les données du formulaire dans la BD, le champ "lundi" affiche toujours
0 que je coche la case ou non.
En fait je désire simplement que la BD enregistre une valeur
1 ou
0 ou
Vrai Faux etc...
Je pense que le problème pourrait venir du type de champ de la BD.
A votre avis quel est le problème.
(je n'ai aucune erreur lorsque le formulaire est validé)
Merci
Re: Case à cocher
Posté : 20 déc. 2021, 23:09
par or 1
sans le code qui gère le contenu du formulaire et construit la requête sql, impossible de savoir où est le problème.
Re: Case à cocher
Posté : 21 déc. 2021, 11:17
par @rthur
Fais un var_dump($_POST) ou var_dump($_GET) en fonction de la méthode d'envoi de ton formulaire.
Ça te permettra de comprendre ce qui est reçu par ton script PHP.
https://developer.mozilla.org/fr/docs/W ... t/checkbox
Re: Case à cocher
Posté : 21 déc. 2021, 13:17
par finipe
Il faut assigner une valeur à ta checkbox :
Les checkbox fonctionnent ainsi :
- quand elles ne sont pas cochées, tu ne reçois rien
- quand elles sont cochées, tu reçois la valeur assignée à la checkbox
Re: Case à cocher
Posté : 21 déc. 2021, 13:45
par PPetit
Merci à tous pour vos réponses.
Voici le code php pour alimenter la base :
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST["name"];
$email = $_POST["email"];
$lundi = $_POST["lundi"];
Un peu plus bas
$statement = $mysqli->prepare("INSERT INTO users (name, email, lundi) VALUES(?, ?, ?)");
$statement->bind_param('sss', $name, $email, $lundi);
Au niveau de la BDD quel est le type de champ (ses attributs) qu'il faut paramétrer pour recevoir le résultat de la case à cocher (VARCHAR, TEXT, INT etc...)
J'ai ajouté
value="1"
comme le dit Finipe
Merci pour votre aide
Re: Case à cocher
Posté : 21 déc. 2021, 14:11
par PPetit
Comme je le dis plus haut, j'ai ajouté
value="1"
au formulaire.
Si je coche la case "lundi", tout va bien et la valeur 1 est bien envoyée dans la base de données.
Par contre, si je ne coche pas la case j'ai une erreur
Column 'lundi' cannot be null
J'ai ensuite essayé d'ajouter
var_dump($_POST)["lundi"];
Et là, j'obtiens un message d'erreur PHP
Re: Case à cocher
Posté : 21 déc. 2021, 14:19
par or 1
Re: Case à cocher
Posté : 21 déc. 2021, 20:47
par PPetit
Désolé mais je ne trouve pas la solution, ce problème pour gérer ce checkbox n'est pas à ma portée.
Merci quand même

Re: Case à cocher
Posté : 21 déc. 2021, 23:01
par finipe
Comme je le disais, quand la case n'est pas cochée, le formulaire ne reçoit rien. Donc, quand tu vérifies tes valeurs de la variable $_POST, le plus simple est de faire un truc du genre (pour éviter les problèmes) :
Et ensuite, tu peux la variable $lundi à ta base.
PS : si tu fais var_dump($_POST)["lundi"]; ça ne marchera pas. Il faut faire var_dump($_POST["lundi"]);
Re: Case à cocher
Posté : 21 déc. 2021, 23:07
par or 1
non, utiliser $_POST['lundi'] pour faire comparaison alors que l'on sait que cela peut ne pas exister, c'est une erreur qui génère d'ailleurs un warning.
c'est un isset() qu'il faut mettre dans le if.
Re: Case à cocher
Posté : 22 déc. 2021, 12:46
par PPetit
J'ai vraiment l'impression que l'utilisation de cases à cocher est complexe. Donc n'y comprenant pas grand chose, je laisse tomber cette idée et je vais simplement utiliser un simple champ, beaucoup plus simple à gérer.
Merci à tous pour vos tentatives d'aide.
Re: Case à cocher
Posté : 29 déc. 2021, 12:50
par two3d
Quand un checkbox est coché, PHP renvoi "on", donc faire une vérif si ton post == "on".
Pour la BDD, mettre ta colonne en tinyint(1) pour être optimisé