Bonjour à tous !
Mon problème aujourd'hui se porte sur une requête où je vérifie si l'identifiant est déjà utilisé ou pas et donc il ne me retourne pas l'erreur est m'inscris ..

<?php
    require '../db.php';
    $errors = [];

    $identifiant = trim($_POST['identifiant']);
    $password = sha1(trim($_POST['password']));
    $passwordRepeat = sha1(trim($_POST['password-repeat']));
    $email = trim($_POST['email']);
    $age = trim($_POST['age']);

    if(!array_key_exists('identifiant', $_POST) || $identifiant == '')
    {
        $errors['identifiant'] = "Vous n'avez pas renseigné votre identifiant";
    }

    if(!array_key_exists('identifiant', $_POST) || strlen($identifiant) < 5)
    {
        $errors['identifiant'] = "Votre identifiant est trop court !";
    }

    if(!array_key_exists('password', $_POST) || $password == '')
    {
        $errors['password'] = "Vous n'avez pas renseigné votre mot de passe";
    }

    if(!array_key_exists('password', $_POST) || strlen($password) < 8)
    {
        $errors['password'] = "Votre mot de passe est trop court !";
    }

    if(!array_key_exists('password-repeat', $_POST) || $passwordRepeat != $password)
    {
        $errors['password-repeat'] = "Vous n'avez pas bien confirmé votre mot de passe";
    }

    if(!array_key_exists('email', $_POST) || $email == '' || !filter_var($email, FILTER_VALIDATE_EMAIL))
    {
        $errors['email'] = "Vous n'avez pas renseigné une adresse e-mail valide";
    }

    if(!array_key_exists('age', $_POST) || $age == '')
    {
        $errors['age'] = "Vous n'avez pas renseigné votre âge";
    }

    $req = $db->prepare("SELECT identifiant FROM users WHERE identifiant = $identifiant");
    $req->bindParam("identifiant", $identifiant);
    $count = $req->rowCount();
    if($count)
    {
        $errors['identifiant'] = "Cet identifiant est déjà utlisé !";
    }

    $req = $db->prepare("SELECT email FROM users WHERE email = $email");
    $req->bindParam("email", $email);
    $count = $req->rowCount();
    if($count)
    {
        $errors['email'] = "Cette adresse e-mail est déjà utlisé !";
    }

    if(!$errors)
    {
        $insert = "INSERT INTO users(identifiant, password, email, age, date_inscription) VALUES(:identifiant, :password, :email, :age, NOW())";
        $req = $db->prepare($insert);
        $req->execute(array(
            ':identifiant'=> $identifiant, 
            ':password' => $password,
            ':email' => $email,
            ':age' => $age
        ));
        header('Location: ../../login.php');
    }else{
        session_start();
        $_SESSION['errors'] = $errors;
        header('Location: ../../signup.php');
    }
?>

Merci à vous !

5 réponses


MehdiWEB
Réponse acceptée
    $req = $db->prepare("SELECT identifiant FROM users WHERE identifiant = :identifiant");
        $req = $db->prepare("SELECT email FROM users WHERE email = :email");

Derien

Carouge10
Réponse acceptée

Bonjour,

Vous n'avez pas exécuter vos reqêtes concernant l'email et l'identifiant.

aStunner
Auteur

Merci de ta réponse Mehdi mais sa ne résous pas mon problème :/

Oui, comme la dit @Carouge10 il faut executer les requetes:

    $req->execute();
aStunner
Auteur

Oui merci à vous je suis aveugle ...