Bonjour,

je m'amuse à faire un système de commentaire mais j'ai un bug lors de la validation du formulaire :

j'ai 3 champs à vérifier (psuedo, mail, commentaire), les vérifications marchent sauf pour la vérification du mail.

Elle fonctionne si tout les champs ne sont pas remplis. Mais si tout les champs sont remplis et malgré que le mail ne soit pas correct alors il envoie quand même les données dans la base.

Pourquoi si tout les champs sont remplis la vérification de celui-ci s'annule ?

<?php
require('connect.php');
if(!empty($_POST) && !empty($_POST'pseudo']) && !empty($_POST'commentaire']) && !empty($_POST'email']))
{
    extract($_POST);
    $pseudo = strip_tags($pseudo);
    $commentaire = strip_tags($commentaire);   
    $email = strip_tags($email);  

    $req = $bdd->prepare('INSERT INTO commentaires (pseudo, commentaire, email) VALUES (:pseudo, :commentaire, :email)');
    $req->execute(array(':pseudo'=>$pseudo, ':commentaire'=>$commentaire, ':email'=>$email));
    $last_com_id = $bdd->lastInsertId('commentaires');
    $req->closeCursor();  

    $req = $bdd->prepare('SELECT * FROM commentaires WHERE id=:last_com_id');
    $req->execute(array(':last_com_id'=>$last_com_id));
    $d = $req->fetch(PDO::FETCH_OBJ);

    $data = array('pseudo'=>$d->pseudo, 'commentaire'=>$d->commentaire, 'email'=>$d->email, 'date'=>$d->date);

    echo json_encode($data); 

}
else
{
    extract($_POST);
    $erreurs = array($erreurpseudo = (empty($pseudo)) ? 'Indiquez un pseudo' : null, 
                     $erreuremail1 = (filter_var ($email, FILTER_VALIDATE_EMAIL) === false) ? 'Votre mail est invalide' : null,
                     $erreuremail2 = (empty($email)) ? 'Veuillez renseigner votre mail' : null,
                     $erreurcommentaire = (empty($commentaire)) ? 'Indiquez un commentaire' : null);
    if($erreurs != null)
    {
        foreach($erreurs as $erreurs)
        {
            if($erreurs != null)
            {
                echo $erreurs.'<br />';
            }
        }
    }
}
?>

2 réponses


bendem
Réponse acceptée

Parce dans ta condition, tu écris clairement que si tous les champs sont remplis, il met en bdd et sinon, il les vérifie => vérification si champs vides...

baboum
Auteur

Merci, hihihi ct tout bête :)