wamp et test sur variable

zoubi
Invité n'ayant pas de compte PHPfrance

23 déc. 2008, 15:28

Bonjour,

Je viens de télécharger la dernière version de wamp et depuis j'ai plein d'erreurs, tout particulièrement quand il ne reconnait pas les variables.

Sur un formulaire j'ai par exemple plusieurs cases à cocher. J'en coche 2 sur 5, lorsque je valide mon formulaire j'ai systhématiquement l'erreur Notice: Undefined index: qui apparaît pour les cases non cochées.

Il y a quelque chose de particulier avec le dernier wamp ? Y a t-il une solution autre que de tester chaque variable ?

Merci

Mammouth du PHP | 1353 Messages

23 déc. 2008, 15:38

Bonjour,

La portion de code ou tu vérifies les variables pourraient nous aider.

Si tu utilises la fonction isset() ou !empty() avant de tester la valeur d'une variable tu ne devrais pas avoir d'erreur...

Je ne pense pas qu il y ait quelque chose de particulier avec la derniere version, par contre tu avais peut etre desactivé les warning sur l ancienne non ? mais la meilleure solution est de corriger ton code plutot que de ne pas afficher les erreurs ;)
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 déc. 2008, 15:47

C'est simplement une question de configuration. En l'occurence, la gestion des erreurs t'indique ici les avertissements (ou Notice) qui devaient être désactivés dans ta précédente config.

Il n'y a pas d'erreur en soit, simplement des notifications de php qui t'informe du fait que tu fais appel à des variables sans vérifier si celle-ci existent au préalable ou pas.

Donc solution 1, modifier le niveau d'erreur de ton serveur pour qu'il ne répertories pas les avertissements (soit dans le php.ini, soit avec la fonction error_reporting() : E_ALL ^ E_NOTICE)

Solution 2, déclarer les variables avant de les utiliser, ou dans ton cas, tester si une variable/index existe avant d'y faire appel. En effet, quand une case n'est pas cochée, la valeur de celle-ci n'est pas envoyée au serveur, et du coup, pas de $_POST['ma_case'] (php t'indique que l'index 'ma_case' n'est pas défini). Tu peux tester si une variable existe avec isSet() ou bien avec empty() (qui te permet également de savoir si celle-ci est vide)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

23 déc. 2008, 15:52

Non je n'ai pas désactivé les erreurs et il n'y en avait aucune jusqu'à présent.

Exemple :

Formulaire :

Code : Tout sélectionner

<input type="checkbox" name="1" value="1" id="1"><label for="1">1</label> <input type="checkbox" name="2" value="2" id="2"><label for="2">2</label> <input type="checkbox" name="3" value="3" id="3"><label for="3">3</label> <input type="checkbox" name="4" value="4" id="4"><label for="4">4</label> <input type="checkbox" name="5" value="5" id="5"><label for="5">5</label>
$res=$_POST['1']."*".$_POST['2']."*".$_POST['3']."*".$_POST['4']."*".$_POST['4'];
echo $res;
Si je coche 1 et 2 j'ai les erreurs undefined pour 3, 4 et 5 après soumission du formulaire.

Merci ;)

Invité
Invité n'ayant pas de compte PHPfrance

23 déc. 2008, 15:57

Merci ryle, quelle solution préconises-tu pour le futur ?