Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/11/2008, à 15:17

MiNiShOoTeR

[PHP] Problème de vérification dans une BDD

Bonjour à tous,

J'ai un petit soucis en PHP, je suis en train de créer un système de membre assez basique.

Le petit soucis vient du fait que lors de l'inscription, j'aimerais vérifier si le pseudo demander n'est pas déjà utiliser, je vais donc vérifier dans la BDD, voila donc le code que j'utilise :

	<?php
	//Je définis mes variables
	$pseudo = $_POST['pseudo'];
	$mdp = $_POST['mdp'];
	$email = $_POST['email'];
	$date = date('d/m/Y');

	//Connexion à la BDD
	mysql_connect("localhost","*********","*******");
	mysql_select_db("*********");

	//J'extrais des infos de la BDD
$membre = mysql_query("SELECT * FROM membre WHERE pseudo='.$pseudo.'");
	mysql_close ();
	//Je vérifie que les infos sont présentes et donc mes variables non nuls.
	if ($pseudo==NULL OR $mdp==NULL OR $email==NULL)
	{
	echo " Il manque des informations, veuillez completer l'ensemble des champs s'il vous plait!<br/><br/>
	      Veuillez retourner à la page précédente en <a href=\"membre1.php\">cliquant ici</a>" ;
	}
	//Je vérifie que le pseudo n'existe pas dans la BDD
	elseif ($membre!=NULL)
	{
	echo "Ce pseudo et déjà utilisé!<br/><br/>
	      Veuillez retourner à la page précédente en <a href=\"membre1.php\">cliquant ici</a>";
	}
	//Après les deux vérifications, j'inscris le nouveau membre
	else
	{
	mysql_connect("localhost", "*********", "********");
	mysql_select_db("********");
	mysql_query("INSERT INTO membre VALUES('', '$pseudo', '$mdp', '$email', '$date')");
	mysql_close ();
	echo "Inscription effectuée avec succès!";
	}
	?>

Je pense que l'erreur vient d'une des lignes suivantes :

$membre = mysql_query("SELECT * FROM membre WHERE pseudo='.$pseudo.'");

elseif ($membre!=NULL)

J'ai beaucoup recherché sur Google, tombé sur pas mal de liens, essayé pas mal de chose mais j'ai toujours un soucis. Dans le cas de ce code là, il me renvoie toujours (peu importe le pseudo tapé) que le pseudo est déjà utilisé.

Merci d'avance pour votre aide! smile

Dernière modification par MiNiShOoTeR (Le 05/11/2008, à 15:59)

Hors ligne

#2 Le 05/11/2008, à 15:21

rniamo

Re : [PHP] Problème de vérification dans une BDD

tu ne récupères pas le résultat de ta requête là, il te manque une fonction (regarde chez developpez.com je ne m'en rappelle plus).

edit : mysql_fetch_array()

Dernière modification par rniamo (Le 05/11/2008, à 15:22)


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#3 Le 05/11/2008, à 16:19

...::ShAdY::...

Re : [PHP] Problème de vérification dans une BDD

Exact, il te manque une boucle avec "mysql_fetch_array()"
du style :

    $membre = mysql_query("SELECT * FROM membre WHERE pseudo='.$pseudo.'");
    while ($reponse = mysql_fetch_array($membre) )

Hors ligne

#4 Le 05/11/2008, à 17:32

MiNiShOoTeR

Re : [PHP] Problème de vérification dans une BDD

Ok merci pour vos réponses, j'essaie tout de suite.

Hors ligne

#5 Le 05/11/2008, à 22:47

Dark-Sham

Re : [PHP] Problème de vérification dans une BDD

Utilise if(empty($mdp)) plutôt que if($mdp == NULL)  wink


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#6 Le 05/11/2008, à 23:35

MiNiShOoTeR

Re : [PHP] Problème de vérification dans une BDD

Dark-Sham a écrit :

Utilise if(empty($mdp)) plutôt que if($mdp == NULL)  wink

Merci du conseil, c'est fait! smile

Par contre, j'ai fait une boucle avec :

while ($reponse = mysql_fetch_array($membre))

Mais le problème persiste, sa ne me renvoie jamais que le pseudo est déjà utilisé, voilà le nouveau code complet (j'ai détaillé toutes mes étapes pour que vous puissez lire plus facilement) :

	<?php
	//Je définis mes variables
	$pseudo = $_POST['pseudo'];
	$mdp = $_POST['mdp'];
	$email = $_POST['email'];
	$date = date('d/m/Y');

	//Connexion à la BDD
	mysql_connect("localhost","****","*****");
	mysql_select_db("*****");

	//J'extrais des infos de la BDD
	$membre = mysql_query("SELECT * FROM membre WHERE pseudo='.$pseudo.'");

	//Je crée une boucle et met les infos de la BDD dans une variable $reponse
	while ($reponse = mysql_fetch_array($membre));
	{
	
	//Je vérifie que les infos sont présentes et donc mes variables non nuls.
	if (empty($pseudo) OR empty($mdp) OR empty($email))
	{
	echo " Il manque des informations, veuillez completer l'ensemble des champs s'il vous plait!<br/><br/>
	      Veuillez retourner à la page précédente en <a href=\"membre1.php\">cliquant ici</a>" ;
	}

	//Je vérifie que le pseudo n'existe pas dans la BDD
	elseif ($reponse!=NULL)
	{
	echo "Ce pseudo et déjà utilisé!<br/><br/>
	      Veuillez retourner à la page précédente en <a href=\"membre1.php\">cliquant ici</a>";
	}

	//Après les deux vérifications, j'inscris le nouveau membre
	else
	{
	mysql_query("INSERT INTO membre VALUES('', '$pseudo', '$mdp', '$email', '$date')");
	echo "Inscription effectuée avec succès!";
	}

	//Je referme la boucle
	}

	//Déconnexion de la BDD
	mysql_close ();
	?>

Merci de votre aide! smile

Dernière modification par MiNiShOoTeR (Le 05/11/2008, à 23:35)

Hors ligne

#7 Le 06/11/2008, à 20:25

zonyxt

Re : [PHP] Problème de vérification dans une BDD

Moi pour réaliser ce genre de chose j'ai utilisé ceci :

//recupération du login
$testlogin=$_GET['login'];
//requete SQL
$query="SELECT count(*) FROM membre WHERE login ='".$testlogin."'";
$result= mysql_query($query);
if (!$result){
	echo 'impossible de faire la requete'. mysql_error();
	exit;
}
$res=mysql_fetch_row($result);
//Si le nombre de pseudo correspondant est zéro le login est libre 
if($res[0]=="0")
  echo "true";
//Sinon le login est déjà pris
else
  echo "false";

Dernière modification par zonyxt (Le 06/11/2008, à 20:25)

Hors ligne

#8 Le 07/11/2008, à 12:49

Ultim4T0m

Re : [PHP] Problème de vérification dans une BDD

Bonjour,

Pour commencer, ton code SQL n'est pas bon.

$membre = mysql_query("SELECT * FROM membre WHERE pseudo='.$pseudo.'");

Ceci serait mieux

$membre = mysql_query("SELECT * FROM membre WHERE pseudo='".$pseudo."'");

Ensuite, le plus simple serait par exemple de faire

if(mysql_num_rows($membre)==1) {
 // Le compte existe déjà
}

Mais cette fonction n'est pas du tout optimisée.
Le mieux à faire est quelque chose du style

$membre = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS nbMembres FROM membre WHERE pseudo='".$pseudo."'"));

if($membre['nbMembres']==1) {
 // Le compte existe déjà
}

Et pense à utiliser la fonction mysql_real_escape_string() sur les données que tu récupères en POST et que tu passes dans une requête SQL wink


Dell Inspiron 6400 ~ Ubuntu Intrepid Ibex

Hors ligne

#9 Le 07/11/2008, à 16:36

Dark-Sham

Re : [PHP] Problème de vérification dans une BDD

Au passage, pendant ta boucle, il faut que tu indiques quel champ de ta table tu veux utiliser, exemple :

<?php
$requete = mysql_query('SELECT id,nom,mdp FROM membres WHERE id="'.$membre_id.'"');
while($donnees = mysql_fetch_array($requete))
{
     echo $donnees['id']; // Affiche le champ id
     echo $donnees['nom']; // Affiche le champ nom
     // etc, etc
}
?>

Dernière modification par Dark-Sham (Le 07/11/2008, à 16:37)


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne