Page 1 sur 1

Case à cocher ...

Posté : 21 mai 2005, 15:03
par Je Débute
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é.

Posté : 21 mai 2005, 15:06
par Cyrano
est-ce que l'attribut "name" de ta case à cocher est bien "echelle" ?

Posté : 21 mai 2005, 16:20
par Epeda
Il faut faire un test avec isset() et éventuellement empty() avant d'attribuer des valeur à la variable $ok :)

Posté : 21 mai 2005, 17:11
par Invité
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

Posté : 21 mai 2005, 17:15
par Cyrano
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
}

Posté : 21 mai 2005, 17:25
par Invité
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 ?

Posté : 21 mai 2005, 17:30
par Cyrano
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.

Posté : 21 mai 2005, 19:37
par Epeda
Ce n'est pas un traitement spécifique dans ton cas, c'est le traitement normal en PHP de tout formulaire HTML. :)

Posté : 22 mai 2005, 08:28
par Je Débute
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.

Posté : 22 mai 2005, 11:28
par albat
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.

Posté : 22 mai 2005, 12:05
par Je Débute
Merci Alba

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