Fonction empty

Résolu/Fermé
lgslgs - 14 mars 2019 à 09:32
 lgslgs - 30 mars 2019 à 16:47
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 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024 4 719
14 mars 2019 à 09:47
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
Tu peux m'expliquer cette syntaxe, je ne la comprends pas
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
19 mars 2019 à 12:12
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 jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
14 mars 2019 à 12:27
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
Oui c'est ce que je voulais dire, je vais essayer ça
0
Merci à tous, ça marche
0