[isset]marque undefined index in...wamp 2.2

Résolu/Fermé
ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 - Modifié par ajp55 le 20/12/2012 à 15:20
ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 - 20 déc. 2012 à 17:17
Bonjour,
débutant dans la programmation web et plus précisement PHP.
j'ai écrit une page PHP en utilisant la version wamp 2.0 et les echo de $POST pour les index non existant etai tout simplement ignorée. j'ai mis à jour la version de wamp. et voilà plein d'erreur d'undefined index.
j'ai donc fais ceci:
creer une fonction  
function _if($condition, $valeurtrue,$valeurfalse){ 
        if($condition) 
              return $valeurtrue; 
       else 
              return $valeurfalse; 
} 

cette fonction ressemble a la fonction de VB iif(...). et à l'utilisation du if tertiaire.
lorsque j'utilise en faisant
echo _if(isset($POST['nom']), $POST['nom'],"") 

il marque toujours undefined index nom et pourtant le issset(.....) a pour le role de verifier si la variable existe.
mais quand j'utilise le if tertiaire
 echo isset($POST['nom'])?$POST['nom']:""; 

il marche. j'aimerai bien savoir pourquoi ma fonction osi simple qu'elle parait ne marche pas et pourtant elle implémente le if tertiaire qui lui marche.
MErci d'avance pour vos réponses.



"L'ordinateur est une grande invention : il y a autant d'erreur qu'avant mais plus personne n'est responsable..."
A voir également:

1 réponse

naruto-94 Messages postés 865 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 20 décembre 2012 188
Modifié par naruto-94 le 20/12/2012 à 16:29
il faut utiliser $_POST et non $POST
0
ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 23
20 déc. 2012 à 16:37
j'utilise en effet $_POST et non $POST. c'est juste que pour ce post je saisissai $POST. je dois avouer que je ne le devrai pas.
0
naruto-94 Messages postés 865 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 20 décembre 2012 188
20 déc. 2012 à 16:38
mais tu utilises $_POST dans quel cas ? dans la page de traitement d'un formulaire ?
0
ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 23
Modifié par ajp55 le 20/12/2012 à 16:43
donne moi un instant je modifie.En effet, lorsque le formulaire est réaffiché parce que l'utilisateur n'a pas respecté les critères, je l'aide en remplissant les anciens champs rempli. voilà la raison de mon isset($_POST['nom'])?$_POST['nom']:"". je fais cela dans les value des inputs
0
ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 23
Modifié par ajp55 le 20/12/2012 à 16:45
ceci n'est qu'un exemple pour le champ nom, je le fais aussi pour les autre champs. j'ai mi du javascript pour obligé le remplissage des champs obligatoires. mais dans un forum lu, en plus de la protection javascript coté client, il fallait aussi renforcé la protection en effectuant une vérification coté serveur avant de valider les données.
0
naruto-94 Messages postés 865 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 20 décembre 2012 188
Modifié par naruto-94 le 20/12/2012 à 16:57
en faite le problème c'est que tu utilises $_POST['nom'] comme paramètre dans ta fonction _if , et comme php veut la lire avant d'executer la fonction si elle n'existe pas ça fait une erreur ..
alors que dans ton if ternaire tu dis simplement que si $_POST['nom'] n'existe pas ça vaut ' ' ou alors $_POST['nom] , et si l'interpréteur php est arrivé à cette partie du if ça veut dire que la valeur existe bien donc il n'y a pas d'erreur suite à l'affichage .

tu ne peux donc pas créer de fonction _if comme tu le souhaite
0