Tester l'unicité du login

Résolu
joncavidulienne Messages postés 13 Statut Membre -  
joncavidulienne Messages postés 13 Statut Membre -
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. astuces72 Messages postés 2146 Date d'inscription   Statut Membre Dernière intervention   1 669
     
    slt

    et ça
    '$login'");
    sans les points
    0
  2. joncavidulienne Messages postés 13 Statut Membre
     
    merci de la réponse rapide mais je viense tester: j'ai toujours le même message d'erreur...
    0
  3. astuces72 Messages postés 2146 Date d'inscription   Statut Membre Dernière intervention   1 669
     
    tu es sur des noms de variable dans ta base et ta requête ?

    fais voir ton code entier !
    0
  4. joncavidulienne Messages postés 13 Statut Membre
     
    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;
    }
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Nhay Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   126
     
    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'"); 
    0
    1. astuces72 Messages postés 2146 Date d'inscription   Statut Membre Dernière intervention   1 669
       
      !
      0
  7. joncavidulienne Messages postés 13 Statut Membre
     
    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?
    0
  8. Nhay Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   126
     
    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)
    0
  9. joncavidulienne Messages postés 13 Statut Membre
     
    Merci encore. Mon problème est résolu.
    Bonne journée
    0