Afficher une condition et pas une erreur PHP

leo -  
 léo -
Bonjour,

Comme je l'ai précisé dans le titre, au lieu de m'afficher "Qu\'est ce que vous faites la ?", je reçois un jolie message d'erreur de PHP qui me dit :

"Notice: Undefined index: pseudo in D:\wamp\www\montessori\administration.php on line 45"

Je sait que pseudo n'est pas défini, c'est justement le but de mon petit script de l'afficher ! Comment faire ?

<?php
if (isset($_POST['prenom']) AND isset($_POST['mot_de_passe']))
{
echo 'Qu\'est ce que vous faites la ?';
}
else
{
echo $_POST['pseudo'];
}
?>

Merci !

5 réponses

  1. le père
     
    Pas d'erreur flagrante dans le formulaire, mais tout est illogique dans ta vérification.

    Tu testes si un champ 'prenom' est défini alors qu'il n'y a aucun champ prénom de défini.

    De plus, si les champs sont définis, tu affiches Qu'est ce que vous faites la ?
    Et s'ils ne sont pas définis, tu essayes d'afficher le pseudo (alors que justement il n'est pas défini).

    De plus, tu testes l'existence de champs, mais pas leurs valeurs...

    Tu peux essayer ça, c'est (un peu) plus logique, et ça ne devrait pas planter
    <?php
    if (isset($_POST['pseudo']) AND isset($_POST['mot_de_passe'])) {
      echo $_POST['pseudo'];
    }
    else {
      echo 'Qu\'est ce que vous faites la ?';
    }
    ?>
    1
  2. le père
     
    Bonjour

    Ben c'est normal...
    Si tes 3 variables $_POST[] correspondent à 3 champs d'un même formulaire, elles sont définies toutes les 3 à la fois, ou pas définies.

    Et j'imagine que tu es dans le cas où tu n'es pas passé par le formulaire, donc aucune n'est définie.
    donc ton test rend faux
    donc on exécute le else
    et on tombe sur $_POST['pseudo'] qui n'existe pas.

    Peux-tu montrer le code du formulaire qui appelle ce script ?
    Et de toutes manières, le test que tu fais pour la vérification me semble hautement fantaisiste. Qu'est-ce que tu veux vérifier ?
    0
  3. L0ci Messages postés 112 Statut Membre 30
     
    Bonjour,

    Si pseudo n'est pas défini cela va invariablement lever une exception. Les 2 solutions que je proposerai sont :
    -réutiliser le
     if(isset(...)) 
    dans le
    else {}

    -utiliser un
    try{echo $_POST['pseudo'];}
    catch{ echo "pseudo non défini";}
    
    0
  4. leo
     
    Le voila

    <form name="identification" method="post" action="administration.php">
    <label>Identifiant : </label>
    <input placeholder="Pseudo" name="pseudo" size="20" required/>
    <br/>
    <label>Mot de passe : </label>
    <input placeholder="Mot de passe" name="mot_de_passe" type="password" size="20" required/>
    <br/>
    <br/>
    <input type="submit" value="Valider" /></td>
    </form>
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. léo
     
    les joies de l'apprentissage du php ^^ Merci beaucoup mon père :D
    0