Fonction empty

Résolu
lgslgs -  
 lgslgs -
Bonjour,
Je vous explique, la fonction empty est censée vérifier si un champ est vide, si le champ contient un caractère visible. Si on tape un espace dans un champ (juste un espace) et qu'on vérifie avec la fonction empty si le champ vide, il est censé ne retourner que le champs est vide car il n'y a pas de caractère visible d'après ce que j'ai appris sur cette fonction mais ce n'est pas ce qui se passe quand j'essaie de l'utiliser

Voici mon code
<!DOCTYPE html>
<html>
    <head>
        <title>Formulaire</title>
        <meta charset="utf-8">
    </head>
    <body>
    <form method="post" action="">
        <h1>Remplissez ce formulaire</h1><br>
        <label for="nom">Nom</label>
        <input type="text" name="nom" id="nom" required><br>

        <label for="prenom">Prénom</label>
        <input type="text" name="prenom" id="prenom" required><br><br>

        <label for="description">Description</label><br>
        <textarea name="description" id="description" rows="8" lows="25" required></textarea><br><br>

        <label for="pays">Pays</label>
        <select name="pays" id="pays">
            <option value="Congo">Congo</option>
            <option value="France">France</option>
            <option value="Allemagne" selected="selected">Allemagne</option>
        </select><br><br>
        <!-- Les cases cochées auront pour valeur "on" -->

        <p>Fast food préféré(s)</p>
        <label for="macdonald">MacDonald</label>
        <input type="checkbox" name="macdonald" id="macdonald"><br>
        
        <label for="burgerking">Burgerking</label>
        <input type="checkbox" name="burgerking" id="burgerking" checked="checked"><br>
        
        <label for="kfc">KFC</label>
        <input type="checkbox" name="kfc" id="kfc"><br><br>

        <p>Etes-vous étudiant ?</p>
        <input type="radio" name="choix" value="Oui" id="oui" checked="checked">
        <label for="oui">Oui</label>

        <input type="radio" name="choix" value="Non" id="non">
        <label for="non">Non</label><br><br>
        
        <input type="submit" name="submit" value="Soumettre">
    </form>   
    </body>
</html>

<?php 
$nom=htmlspecialchars($_POST['nom']);
$prenom=htmlspecialchars($_POST['prenom']);
$description=htmlspecialchars($_POST['description']);

if(isset($_POST['submit']))
{
    if(!empty($nom) && !empty($prenom) && !empty($description))
    {
        echo "ok";
    }
}
?>


Aidez-moi à trouver le problème svp
Merci
A voir également:

3 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Bonjour,
$nom = isset($_POST['nom']) ? trim($_POST['nom']): NULL;

if(empty($nom)){
..


Attention à l'utilisation de htmlspecialchars
ça ne s'utilise qu'à l'affichage uniquement..... pas pour le traitement ni avant l'insertion en bdd
0
lgslgs
 
Tu peux m'expliquer cette syntaxe, je ne la comprends pas
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

C'est ? : est un opérateur ternaire (comprendre, qui prend trois opérandes) qui revient à peu près à faire if...else. Mais comme c'est un opérateur et pas une structure de langage, il peut être utilisé au sein même d'une expression.
Bref, sa ligne
$nom = isset($_POST['nom']) ? trim($_POST['nom']): NULL;
revient à écrire :
if (isset($_POST['nom']))
    $nom = trim($_POST['nom']);
else
    $nom = NULL;

Xavier
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Ce que tu as appris est faux : empty retourne FALSE si la chaîne est uniquement constituée d'espaces.
D'où la réponse de Jordane qui commence par faire un trim(), c'est à dire qui supprime les espaces de début/fin de chaîne.
Attention également, empty renvoie TRUE si la chaîne vaut "0"...
La doc pour plus de détails : https://www.php.net/empty

Xavier
0
lgslgs
 
Oui c'est ce que je voulais dire, je vais essayer ça
0
lgslgs
 
Merci à tous, ça marche
0