Message d'erreur avec des checkbox

Eléphanteau du PHP | 19 Messages

01 août 2005, 09:25

Salut à tous !

Un petit truc qui me chagrine, et malgré mes efforts, je ne vois pas comment m’en débarrasser.

Je dispose d’une page où un utilisateur pourra saisir des informations le concernant. Dans cette page, j’ai des edits, et aussi 2 cases à cocher. Mes checkbox sont définis comme suit dans mon code :

Code : Tout sélectionner

<input type="checkbox" name="Check1"><p>ma première checkbox</p> <input type="checkbox" name="Check2"><p>ma deuxième checkbox</p>
Puis, lorsque l’utilisateur valide sa saisie, je récupère notamment le "contenu" des checkbox, pour savoir si elles sont cochées ou pas.

Code : Tout sélectionner

$Check1 = POST['Check1'] ; $Check2 = POST['Check2'] ;
Ensuite, je fais une requête qui va créer une nouvelle occurrence dans une table en fonction de l’état de la checkbox, si elle est cochée ou non.
La requête est basique, rien de bien sorcier.

Seulement, quand la saisie est validée et qu’un message de confirmation apparaît, j’ai 2 messages d’erreurs qui apparaissent :
Notice: Undefined index: Check1 in c:\ConfirmCreerClient.php on line 23
Notice: Undefined index: Check2 in c:\ConfirmCreerClient.php on line 24
Les 2 messages d’erreurs renvoient aux 2 lignes où je récupère le contenu des checkbox.

Le truc étrange, c’est que le message de confirmation s’affiche bien, et que la saisie est correcte. C’est à dire que si j’ai vais voir mon nouveau client ainsi créé, le fait que les cases étaient cochées ou non lors de la saisie aura bien était enregistré.

En gros, ça marche très bien, sauf que j’ai ces 2 messages d’erreur, qui ne sont pas agréable à voir, et qui peuvent induire en erreur mon utilisateur...

A savoir que j'ai 2 fichiers de code distinct : un pour le formulaire de saisie, et un autre pour vérifier la validité de la saisie.
C'est parce que la vitesse de la lumière est supérieure à celle du son,
Que tant de gens paraissent brillant avant d'avoir l'air con.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

01 août 2005, 09:29

ton formulaire est bien en POST ?

tu as ce formulaire même si tu coches les cases ? car si les cases ne sont pas cochées les variables correspondantes ne seront pas crées

tu peux faire ce test pour éviter les erreurs
$Check1 = (isset(POST['Check1']))?$_POST['Check1']:null;
si la variable Post n'existe pa,s ta variable local sera intialisée à null, donc plus de problème de variable non itialisée ensuite ;)

Mammouth du PHP | 19672 Messages

01 août 2005, 09:32

C'est normal pour deux raisons :
D'abord c'est $_POST et pas POST tout court;
Ensuite si les cases ne sont pas cochées, l'index ne sera pas initialisé dans $_POST : modifie comme ça:
$Check1 = isset($_POST['Check1']) ? $_POST['Check1'] : "";
$Check2 = isset($_POST['Check2']) ? $_POST['Check2'] : "" ;
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 19 Messages

01 août 2005, 09:45

Oups, mea culpa, c’était bien des $_POST que j’avais. Comme je retouche toujours légèrement mon code quand je le copie ici, ça a dû sauter avec les modifs.

Sinon, le problème venait effectivement bien de là. Je pensais naïvement que les checkbox renvoyaient automatiquement on ou off en fonction de leur état. :langue:

Encore une fois, un grand merci, vous êtes les meilleurs ! ! ! Image
C'est parce que la vitesse de la lumière est supérieure à celle du son,
Que tant de gens paraissent brillant avant d'avoir l'air con.