Salut,

Je suis vraiment désolé d'avance si cette quesdtion a deja été posée a plusisuers reprise de plus je ne sais pas comment bien formuler ma question pour avoir une reponses precise a mes denombreux recherches.

Alors voilà j'ai mis en place une page pour que mes membres puissent éditer leur profil mais du coup pour l'instant j'ai du séparer la partie obligatoire et facultative en deux partie.
Dans la partie facultative je n'ai pas fait beaocoup de condition pour le traitement (a part pour vérifier si ceci ne depasse pas les 255 caractères, ou c'est bien un email, URL etc...)
Dans la partie obligatoire par contre c'est là ou vient le problème :
J'aimerai si le membre édite son profil et que l'adresse mail qui a été recupré et mis dans le champ value de l'input n'a pas été modifié , que PHP ne le prend pas en compte.
En gros j'aimerai faire une requete du style
Vérifie si l'adresse mail n'existe pas deja dans la base de donée.

SI cela existe :
    - SI l'adresse mail appartient a l'utilisateur  :
            -Ne fait rien
    -SI l'adresse mail appartient a une autre personne :
        -Cette adresse mail est deja prise.
SINON l'adresse mail est disponiblie

Mais j'ai beaucou tout essayer cela ne change rien j'ai même eu droit a une surprise (les données effacées dans la base de donnéees).

Deja pour vérifié si l'adresse mail est valide et dispo ou pas je fais comme ca (je deteste les rowcount)

SI cela existe :
if((empty($email) OR $_POST['email'] != $_POST['email_comfirm']) OR !filter_var($email, FILTER_VALIDATE_EMAIL)){
        $errors['email'] = "<p>Votre email n'est pas valide.</p>";
    }else {
        $db = new Database('root', 'root', 'forum');
        $user = $db->query('SELECT membre_id FROM forum_membres WHERE membre_email = ?', [$_POST['email']])->fetch();
        if($user){
            $errors['email'] = "<p>Cet email existe déjà. </p>";
        }

Pouvez vous m'aider s'il vous plait ? Je ne sais pas si j'ai été précis dans mes explication...

Merci beaucoup d'avance

1 réponse


essaye je crois que c'est juste

<?php 

if((empty($email) OR $_POST['email'] != $_POST['email_comfirm']) OR !filter_var($email, FILTER_VALIDATE_EMAIL)){
        $errors['email'] = "<p>Votre email n'est pas valide.</p>";
    }else {
        $db = new Database('root', 'root', 'forum');
        $user = $db->query('SELECT membre_id FROM forum_membres WHERE membre_email = ?', [$_POST['email']])->fetch();
        if($user){
            $errors['email'] = "<p>Cet email existe déjà. </p>";
        }

if(!empty($_POST['email']) && $_POST['email'] == $_POST['email_comfirm'] && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
     $db = new Database('root', 'root', 'forum');
     $req = $db->prepare("SELECT membre_id FROM forum_membres WHERE membre_email = :email");
     $req->execute(array(':email' => $_POST['email']));
     $result = $req->fetch(PDO::FETCH_ASSOC);
     if($result)
     {
        echo "email existe deja";
     }
     else{
        // TRAITEMENT EMAIL VALIDE ET LIBRE
     }
}
else{
        $errors['email'] = "<p>Votre email n'est pas valide.</p>";
     }
?>