J'ai ce message d'erreur : Undefined index: action in ...

Eléphant du PHP | 72 Messages

09 mai 2006, 10:59

Bonjour tout le monde !
Donc comme l'indique si bien le titre j'ai le message d'erreur suivant :
Notice: Undefined index: action in c:\program files\easyphp1-8\www\site\contact.php on line 22
et ma ligne 22 :
if($_POST['action'] == 'submitted')
Alors si quelqu'un pouvait m'aider, ça serait super sympa !
Encore merci !
y a un début à tout !

Avatar du membre
ViPHP
ViPHP | 3008 Messages

09 mai 2006, 11:02

Fournies nous un code plus complet :)

Les numéros de ligne ne sont parfois pas très bien situés...

En gros cette erreur indique que $_POST['action'] n'est pas définie. Fait un test avec isset.
Modifié en dernier par charabia le 09 mai 2006, 11:04, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 mai 2006, 11:03

Ce message d'erreur veut dire qu'il ne trouve pas l'index 'action' dans le tableau $_POST

Celà veut tout simplement dire que ta variable n'existe pas.

Pour corriger ce problème, tu peux tester son existence avec isset
//Si la variable $_POST['action'] existe et qu'elle vaut 'submitted'
if(isset($_POST['action']) && ($_POST['action'] == 'submitted'))
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 1353 Messages

09 mai 2006, 11:03

Cela signifie que $_POST['action'] n'existe pas. Vérifie l'orthographe dans la page appelante et la méthode qui doit bien etre un POST.

Si tu veux éviter d'avoir l'erreur rajoute la condition isset()

Ainsi tu auras :
if(isset($_POST["action"]) && $_POST['action'] == 'submitted')
Comme ca si il n'est pas défini tu n'auras pas de probleme, si tu traites le cas dans un else bien sur...

EDIT : Zeus m'a devancé :(

Eléphant du PHP | 72 Messages

09 mai 2006, 11:12

Merci pour tout cet élan d'aide ! :wink:
Donc du coup j'ai appliqué la solution de Zeus (désolée pour les autres, mais merci quand même !) et euréka ça marche !!! Mais je n'ai pas tout compris donc ça n'arrange pas tout !
Puisque ça marche avec isset c'est que ma variable existe bien, non ?
Je comprends vite, mais faut m'expliquer longtemps !!! :oops:
y a un début à tout !

Mammouth du PHP | 1353 Messages

09 mai 2006, 11:15

tu es sur que tu rentres dans la boucle if() ?

Le isset permet juste de tester l'existence de la variable donc le rajouter te permet d'éviter le message d'erreur, mais cela ne veut pas dire que tu vas rentrer dans le if...

Pour être sur de bien rentrer dans la boucle tu peux rajouter un echo "Je suis dedans !!!" dans le if et un echo "Je n'y suis pas" dans le else par exemple, cela te permettra d'être sur...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 mai 2006, 11:26

En fait, je pense que ce code est sur une page qui contient un formulaire et qui doit s'executer quand le formulaire est validé, non ?

Si c'est le cas, au 1er chargement de ton formulaire, il n'y a rien en POST donc ta variable n'existe pas et tu obtient une erreur.

La fonction isset() retourne true si la variable existe et false sinon, ce qui permet de ne pas faire le test sur le contenu de la variable si elle n'existe pas .

Je ne sais pas si je suis clair :-k
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer