PHP : Test presence données.

Résolu
rmerme Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   -  
rmerme Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un problème.

<!DOCTYPE html>
<html> 
 <head>
  <!-- Entete de la page -->
  <meta charset "utf-8" />
  <title>Test Forms</title>
 </head>
 <body>
  <form method="post" action="formulaire.php">     
          <label for="pseudo">Votre pseudo :</label>
          <input type="text" name="pseudo" id="pseudo" />
          <input type="submit" value="Envoyer" />
  </form>
 </body>
</html>


Fichier formulaire.php

<!DOCTYPE html 
<html>
   <head>
       <title>Formulaire</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   </head>
    
 <body>
     <?php
   if (isset($_POST['pseudo']))
   {
    $pseudo = $_POST['pseudo'];
    echo $pseudo;
     $lvlen = strlen($pseudo);
    echo $lvlen;
   }
   else
   {
    $pseudo = 'vide';
    echo $pseudo;
    echo $lvlen;
   }
   
   if($lvlen == 0)
   {
    echo 'longueur = 0';
   }
  ?>
 </body>
</html>

Mon problème : php ne détecte jamais que le champ pseudo est vide, par contre, $lvlen est égal à 0.
Quelle est l'erreur dans le isset ?

Merci pour vos réponses

EDIT : Déplacement du sujet dans le forum PHP
EDIT² : Ajout du LANGAGE dans les balises de code pour avoir la coloration syntaxique.

3 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    isset sert à vérifier que la variable existe.
    Pour savoir si elle est vide .. c'est empty qu'il faut utiliser

    Essaye ça :
    <?php
    //récupération PROPRE des variables AVANT de les utiliser
    $pseudo = !empty($_POST['pseudo']) ? trim($_POST['pseudo']) : NULL;
    $lvlen = $pseudo ? strlen($pseudo) : 0;
    ?>
    <!DOCTYPE html>
    <html>
       <head>
           <title>Formulaire</title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       </head>
        
     <body>
         <?php
       if ($pseudo){
        echo $pseudo;
        echo $lvlen;
       } else {
         echo 'vide';   
       }
       
       if($lvlen == 0){
        echo 'longueur = 0';
       }
      ?>
     </body>
    </html>
    


    Je t'invite fortement à lire ceci :
    https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

    et concernant l'écriture des IF /ELSE .. je t'invite à consulter la norme PSR-2
    https://www.php-fig.org/psr/psr-2/

    0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonsoir, as tu essayé
    !empty
    au lieu de
    isset
    ?
    0
  3. rmerme Messages postés 36 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci beaucoup pour ton aide Jordane.
    Effectivement, cela fonctionne.
    Bonne journée.
    0