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
A voir également:

8 réponses

astuces72 Messages postés 8349 Date d'inscription   Statut Membre Dernière intervention   1 641
 
slt

et ça
'$login'");
sans les points
0
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
astuces72 Messages postés 8349 Date d'inscription   Statut Membre Dernière intervention   1 641
 
tu es sur des noms de variable dans ta base et ta requête ?

fais voir ton code entier !
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
astuces72 Messages postés 8349 Date d'inscription   Statut Membre Dernière intervention   1 641
 
!
0
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
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
joncavidulienne Messages postés 13 Statut Membre
 
Merci encore. Mon problème est résolu.
Bonne journée
0