éviter les inscriptions avec le même pseudo.

Eléphanteau du PHP | 11 Messages

16 mai 2006, 15:02

Bonjour a tous :)
Voila je travaille actuellement sur un script d'inscription tout simple, qui demande juste le pseudo, mot de passe et adresse mail.
Je souhaiterais éviter que des personnes s'inscrivent avec le même pseudo.
Pour cela j'ai adopté une méthode qui n'a pas trop l'air de marcher :(
                                      //Connexion à mysql.
										require("config.inc.php");
                                        mysql_connect($host,$username,$password);
                                        mysql_select_db($bdd_name);
                                                                              
                                        $req_user = mysql_query('SELECT pseudo FROM membres ORDER BY id');
										while($user = mysql_fetch_array($req_user))
										{
										if(strtolower($user['pseudo']) == strtolower($_POST['pseudo']))
											{
												echo 'Le nom d\'utilisateur existe deja';
											}
										else
											{
										//On éxécute la requête qui enregistre un nouveau membre.
                                        mysql_query("INSERT INTO membres (id, pseudo, mot_passe, confirmation, email, rang) VALUES ('', '".$pseudo."', '".$mot_passe."', '1', '".$email."', '0')");
       
											}
ce n'est qu'une partie de mon code, mais c'est la ou sa coince!
En effet lorsque je veux m'inscrire avec le même pseudo qu'un autre membre, sa me m'affiche " le nom d'utilisateur existe déja" d'une part le nombre de fois qu'il y a de membres dans la table,
mais De plus.... sa m'insère quand même le membre dans la BDD...
et sa m'envoie le mail de confirmation!

J'ai beau réfléchir, je n'arrive pas a trouver de solution a mon problème :(

Mammouth du PHP | 536 Messages

16 mai 2006, 15:09

tu as essayé d'ajouter la fonction exit() après ta commande echo ?
Peut etre que ca peut marcher

Eléphanteau du PHP | 11 Messages

16 mai 2006, 15:18

je viens de tester ^^
sa ne marche pas.. :(

Mammouth du PHP | 536 Messages

16 mai 2006, 15:28

a la place de tout ton while, essai ca :
$num = mysql_num_rows($req_user);
if ($num > 0)
{
echo "login existe deja";
exit();
}
else
{...
Normalement, il me semble que cela doit marcher

Eléphanteau du PHP | 11 Messages

16 mai 2006, 15:50

bon sa marche...
mais pas totalement, il affiche bien que le pseudo est déja enregistré
mais pour tous les pseudos que je rentre... qu'ils existent déja ou pas.... -_-'

voila mon code après ce que tu m'as dit de faire:
 {
                                        //Connexion à mysql.
										require("config.inc.php");
mysql_connect($host,$username,$password);
mysql_select_db($bdd_name);
                                                                              
$req_user = mysql_query('SELECT pseudo FROM membres ORDER BY id');

		$num = mysql_num_rows($req_user);
						if ($num > 0)
							{
							echo "login existe deja";
							exit();
							}
							else
							{
							//On éxécute la requête qui enregistre un nouveau membre.
mysql_query("INSERT INTO membres (id, pseudo, mot_passe, confirmation, email, rang) VALUES ('', '".$pseudo."', '".$mot_passe."', '1', '".$email."', '0')");
												
							}

Mammouth du PHP | 536 Messages

16 mai 2006, 15:55

ajoute dans ta commande sql :

Code : Tout sélectionner

WHERE pseudo='$_POST[nomduchampduformulaire]'";

Eléphanteau du PHP | 11 Messages

16 mai 2006, 16:00

ok je fais sa je reviens dans 1h ^^ j'ai cours xD

Eléphant du PHP | 124 Messages

16 mai 2006, 19:04

moi j'ai
if ($num!=0)


Eléphanteau du PHP | 11 Messages

18 mai 2006, 09:17

tout marche impec après que j'ai changé ma requère sql :)
merci béka!
[problème résolu ]

Mammouth du PHP | 536 Messages

18 mai 2006, 09:26

de rien
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!