Case à cocher

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Case à cocher

Re: Case à cocher

par two3d » 29 déc. 2021, 12:50

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é

Re: Case à cocher

par PPetit » 22 déc. 2021, 12:46

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

par or 1 » 21 déc. 2021, 23:07

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

par finipe » 21 déc. 2021, 23:01

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) :

Code : Tout sélectionner

if($_POST['lundi'] == 1) $lundi = 1; else $lundi = 0;
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

par PPetit » 21 déc. 2021, 20:47

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

par or 1 » 21 déc. 2021, 14:19

Re: Case à cocher

par PPetit » 21 déc. 2021, 14:11

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

par PPetit » 21 déc. 2021, 13:45

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

par finipe » 21 déc. 2021, 13:17

Il faut assigner une valeur à ta checkbox :

Code : Tout sélectionner

<input type="checkbox" name="lundi" value="1" />
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

par @rthur » 21 déc. 2021, 11:17

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

par or 1 » 20 déc. 2021, 23:09

sans le code qui gère le contenu du formulaire et construit la requête sql, impossible de savoir où est le problème.

Case à cocher

par PPetit » 20 déc. 2021, 23:06

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