Tester l'unicité du login

Résolu
Bonjour,

Voici mon morceau de code:

//verification de l'unicite du login
$req=$bdd->query = ("SELECT * FROM utilisateur where utilog = '.$login.'");
$data=$req->fetch();

if($data['utilog'] != "" )

{
echo "<label class='erreur'>Le login que vous avez saisi est déjà utilisé par un autre utilisateur.</label><br>";
$erreur = true;
}

J'ai le message d'erreur suivant:

Fatal error: Call to a member function fetch() on a non-object in C:\Program Files (x86)\EasyPHP-5.3.9\www\inscription.php on line 137

Je cherche mais ne trouve pas la solution.
Quelqu'un aurait-il la gentillesse de m'aider?
Merci

8 réponses

  1. merci de la réponse rapide mais je viense tester: j'ai toujours le même message d'erreur...
    1. tu es sur des noms de variable dans ta base et ta requête ?

      fais voir ton code entier !
      1. Merci de ta patience

        le voilà:

        <?php

        //inclusion des variables de connexion
        include "connect_bdd.php";

        $nom ="";
        $adresse="";
        $ville="";
        $code="";
        $mail ="";
        $login ="";
        $pass ="";
        $conf ="";

        if(isset($_POST['nom']))
        {

        $nom = htmlentities($_POST['nom']);
        $mail = htmlentities($_POST['mail']);
        $adresse = htmlentities($_POST['adresse']);
        $code = htmlentities($_POST['code']);
        $ville = htmlentities($_POST['ville']);
        $login = htmlentities($_POST['login']);
        $pass = htmlentities($_POST['pass']);
        $conf = htmlentities($_POST['conf']);

        //adresse mail valide
        if($mail <> "")
        {
        $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#';
        if(!preg_match($Syntaxe,$mail))
        {
        echo "<label class='erreur'>Le mail saisi n'est pas valide.</label><br>";
        $erreur = true;
        }
        }

        //login
        if($login != "" && (strlen($login) < 4 || strlen($login) > 10))
        {
        echo "<label class='erreur'>Le login doit faire entre 4 et 10 caractères.</label><br>";
        $erreur = true;
        }
        else
        {

        //verification de l'unicite du login
        $req=$bdd->query = ("SELECT * FROM utilisateur where utilog = '$login'");
        $data=$req->fetch();

        if($data['utilog'] != "" )

        {
        echo "<label class='erreur'>Le login que vous avez saisi est déjà utilisé par un autre utilisateur.</label><br>";
        $erreur = true;
        }
        }

        //mot de passe
        if($pass != "" && (strlen($pass) < 4 || strlen($pass) > 10))
        {
        echo "<label class='erreur'>Le mot de passe doit faire entre 4 et 10 caractères.</label><br>";
        $erreur = true;
        }

        //confirmation du mot de passe
        if($pass != $conf)
        {
        echo "<label class='erreur'>Le mot de passe et la confirmation sont différents.</label><br>";
        $erreur = true;
        }

        //champs obligatoires
        if($nom == "" || $login == "" || $mail == "" || $pass == "" || $conf == "")
        {
        echo "<label class='erreur'>Les champs marqués d'une * sont obligatoires</label><br>";
        $erreur = true;
        }

        $rec=$bdd->query ("INSERT INTO utilisateur(utinom,utiadresse,utiville,uticode,utimail,utilog,utipas) VALUES('$nom','$adresse','$ville','$code','$mail','$login','".md5($pass)."')");

        echo '<script language="JavaScript">
        alert("Votre inscription est bien prise en compte. ");
        window.location.replace("index.php");
        </script>';
        exit;
        }
        1. Bonjour !
          Essaye de remplacer ça :
          $req=$bdd->query = ("SELECT * FROM utilisateur where utilog = '$login'"); 
          Par ça :
          $req=$bdd->query("SELECT * FROM utilisateur where utilog = '$login'"); 
        2. Bravo vous êtes trop forts!J'ai suivi le conseil de Nhay et çà marche.(je veux rester en PDO)
          J'ai encore un tout petit problème: il me dit bien que le login est déjà utilisé mais le client est quand même inscrit dans ma base de données. Est-ce normal?
          1. Oui, tu rempli la variable $erreur mais tu ne la test pas avant ton insertion.
            Un petit If sur ton Insert et le tour est joué :) (Pense à englober ton javascript aussi)
            1. Merci encore. Mon problème est résolu.
              Bonne journée