PHP : Test presence données.

Résolu/Fermé
Signaler
Messages postés
36
Date d'inscription
samedi 3 mars 2018
Statut
Membre
Dernière intervention
18 mars 2019
-
Messages postés
36
Date d'inscription
samedi 3 mars 2018
Statut
Membre
Dernière intervention
18 mars 2019
-
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

Messages postés
34258
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 décembre 2021
3 866
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://www.commentcamarche.net/faq/48399-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/

Messages postés
17785
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 décembre 2021
951
bonsoir, as tu essayé
!empty
au lieu de
isset
?
Messages postés
36
Date d'inscription
samedi 3 mars 2018
Statut
Membre
Dernière intervention
18 mars 2019

Merci beaucoup pour ton aide Jordane.
Effectivement, cela fonctionne.
Bonne journée.