Case à cocher ...

Eléphant du PHP | 117 Messages

21 mai 2005, 15:03

J'ai placé une case à cocher dans un formulaire
Quand je recupère l'info du formulaire, si je n'ai pas coché, je reçois un message comme quoi ma variable de formulaire n'est pas valide

$ok = $_POST["echelle"];
Notice: Undefined index: echelle in c:\program files\easyphp1-8\www\3p\appelprogramme.php on line 16


J'ai imprimé la récup pour voir
quand ce n'est pas coché =rien
quand c'est coché = on

Dans tous les cas mon test marche sur l'aternative Coché/pas Coché.

Mammouth du PHP | 19672 Messages

21 mai 2005, 15:06

est-ce que l'attribut "name" de ta case à cocher est bien "echelle" ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 102 Messages

21 mai 2005, 16:20

Il faut faire un test avec isset() et éventuellement empty() avant d'attribuer des valeur à la variable $ok :)

Invité
Invité n'ayant pas de compte PHPfrance

21 mai 2005, 17:11

Oui, j'ai bien refait avec d'autres valeurs

Si je ne coche pas la case elle me renvoie une erreur (comme si NULL ne lui convenait pas), mais fais le bon test.
Si je coche la case, tout est bon ... pas d'erreur

Mammouth du PHP | 19672 Messages

21 mai 2005, 17:15

Ce qui veut dire qu'avant de traiter cette valeur, il te faut d'abord en tester l'existence avec
if(isset($variable)) 
{
    // Traitement normal
}
else
{
    // la variable n'existe pas, on fait autre chose
}
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

21 mai 2005, 17:25

Je ne comprends pas pourquoi elle existe ou elle existe pas

J'ai dans mon formulaire :
<P><INPUT TYPE=CHECKBOX NAME="ok" >

J'ai dans mon fichier PHP
$ok = $_POST['ok'];

C'est un cas classique d'usage d'un chekbox me semble-t-il pourquoi un tratement spécifique dans mon cas ?

Mammouth du PHP | 19672 Messages

21 mai 2005, 17:30

Parce que si tu ne coches pas cette case, aucune valeur n'est envoyée et donc elle n'est pas incluse dans la variable $_POST ou $_GET selon la méthode choisie.

Pour t'en convaincre, juste avant le traitement, mets ceci :
<?php
echo("<pre>");
var_dump($_POST);
echo("</pre>");
?>
Tu verras exactement ce qu'envoie le formulaire.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 102 Messages

21 mai 2005, 19:37

Ce n'est pas un traitement spécifique dans ton cas, c'est le traitement normal en PHP de tout formulaire HTML. :)

Eléphant du PHP | 117 Messages

22 mai 2005, 08:28

Cyrano, Epeda, etc.

Merci.

Voici, selon vos indications, le code que j'ai placé pour récuperer la variable de coche

if (isset($_POST['ok']))
{
$ok = 1;
}
else
{
$ok= 0 ;
}

Ca marche parfaitement !

Je m'interroge cependant, il faudra donc faire cela à chaque fois qu'il y a une coche à traiter.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

22 mai 2005, 11:28

Les cases à cocher fonctionnent effectivement ainsi.
Leur principe de gestion ne peut être changé.
En revanche, le code peut être simplifié, lui ! ;)
$ok = (isset($_POST['ok']) ? 1 : 0);
NB : cette écriture n'est vraiment utile que si tu as besoin d'attribuer une valeur à $ok.
Si tu as besoin de lancer une série d'instructions, tu ne peux te passer d'une structure if... (then)... else.

Eléphant du PHP | 117 Messages

22 mai 2005, 12:05

Merci Alba

La symtaxe de simplification !!! il faut aussi apprendre !