Menu

Fonction empty

- - Dernière réponse : Reivax962
Messages postés
3343
Date d'inscription
jeudi 16 juin 2005
Dernière intervention
19 mars 2019
- 19 mars 2019 à 12:12
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
Afficher la suite 

Votre réponse

2 réponses

Messages postés
25029
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 mars 2019
1906
0
Merci
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
Tu peux m'expliquer cette syntaxe, je ne la comprends pas
Reivax962
Messages postés
3343
Date d'inscription
jeudi 16 juin 2005
Dernière intervention
19 mars 2019
1174 -
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
Commenter la réponse de jordane45
Messages postés
3343
Date d'inscription
jeudi 16 juin 2005
Dernière intervention
19 mars 2019
1174
0
Merci
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 : http://php.net/empty

Xavier
Oui c'est ce que je voulais dire, je vais essayer ça
Commenter la réponse de Reivax962