[PHP] FCT qui foire

Statut
N'est pas ouverte pour d'autres réponses.

MbK_

Etudjant
Bon j'en peux plus.


Ca fais 1h que je suis entrain de tester une fonction (pourtant simple) mais elle ne fonctionne pas!

Elle sert a me dire si un pseudo (au niveau de l'inscription) est déjà pris ou pas.

La voici :

Code:
	function pseudo_est_dispo($pseudo){
		bdd();
		global $prefix_table;
		$query = "SELECT * FROM ".$prefix_table."membres WHERE pseudo = ".$pseudo."";
		$query = mysql_query($query);
		$number = @mysql_num_rows($query);
		if($number != 0 || isset($number)){
			return FALSE;
		}
		else{
			return TRUE;
		}
	}
j'ai fait des tests et ca ne va pas. Elle retourne toujours TRUE...


Que faire?
 

FoX SpeEd

Touriste
essaye en utilisant la fonction pour tout mettre en minuscule dans le pseudo (deso me couvien plus la quelle c'est) car si sa se trouve c'est tou bêtement que tu mes des majuscule parfois et donc il ne va pas le trouver dans la bdd
 

zoheir

cvm.mangaleet()
c ton if qui est foireux, a ta place je mettrai:

if(mysql_num_rows($query)) return false
else return true
 
1er
OP
MbK_

MbK_

Etudjant
FoX SpeEd a dit:
essaye en utilisant la fonction pour tout mettre en minuscule dans le pseudo (deso me couvien plus la quelle c'est) car si sa se trouve c'est tou bêtement que tu mes des majuscule parfois et donc il ne va pas le trouver dans la bdd
No ca ne va pas mieux.

PHP fait la difference entre Maj et Min :x
 

zoheir

cvm.mangaleet()
[ cvm a dit:
]c ton if qui est foireux, a ta place je mettrai:

if(mysql_num_rows($query)) return false
else return true
lol rien à voir :D

faut que jme mettes au mysql ^^
 
1er
OP
MbK_

MbK_

Etudjant
[ cvm a dit:
]c ton if qui est foireux, a ta place je mettrai:

if(mysql_num_rows($query)) return false
else return true
Bon j'ai mis ca

Code:
	function pseudo_est_dispo($pseudo){
		bdd();
		global $prefix_table;
		$query = "SELECT * FROM ".$prefix_table."membres WHERE pseudo = ".$pseudo."";
		$query = mysql_query($query) or die(mysql_error());
		if(mysql_num_rows($query) != '1'){
			return TRUE;
		}
		else{
			return FALSE;
		}
	}
et il me retourne une erreur

Unknown column 'MbK' in 'where clause'
En sachant que dans ma BDD, je n'ai rien. D'ou vient l'erreur?
 

zoheir

cvm.mangaleet()
"FROM ".$prefix_table."membres"

tu es sur que le nom de la table est correcte?

et surtout n'y a t il pas confusion entre le "pseudo" et "$pseudo" ?

change le nom de tes variables on ne sait jamais...
 
1er
OP
MbK_

MbK_

Etudjant
Bon je suis arrivé a un truc qui va en réécrivant tout.

Code:
function pseudo_dispo($pseudo){
	global $prefix_table;
	$query1 = "SELECT * FROM ".$prefix_table."membres WHERE pseudo='".$pseudo."'";
	$query = mysql_query($query1);
	$number = @mysql_num_rows($query);
		if ($number != '1'){
			return TRUE;
		}
		else{
			return FALSE;
		}
}
Ca marche et je sais pas ce que j'ai changé. Et je veux pas le savoir
^^

Merci à tous
 

noLain

www.wearewise.be
t'avais simplement oublié les ' ' autour de la variable pseudo dans ta requete.. du coup le server mysql pensait que c'etait un champ de la table ..

ps: maintenant tu le sais kan meme :D ^^
 

FoX SpeEd

Touriste
ca c'est ce qui est méga chiant en php lol un ptit guillement et plus rien ne va :D
 

null

ose();
Code:
function pseudo_est_dispo($pseudo)
{
   bdd();
   global $prefix_table;
   
   $sql = mysql_query("SELECT * FROM ".$prefix_table."membres WHERE pseudo = '".$pseudo."' LIMIT 0,1");
   
   if(mysql_num_rows($sql) == 1)
      return FALSE;
   else 
      return TRUE;
} //end pseudo_est_dispo()
Comment ça c'est beaucoup plus propre et ça doit marcher. Il faut faire très attention à comment tu traites tes requêtes SQL pour éviter les SQL-Injections !

PS: c'est plus propre de mettre le "GLOBAL" avant "bdd();" mais ça dépend si on peut en fonction de ton script.
 

WaKaaN

JcQL
Wé, fais gaffe aux injections avec ton code :wink: ...

sécurise le un peu plus comme dit juste avant moi :wink:
 

noLain

www.wearewise.be
ne faisont pas les choses à moitiés alors:

Code:
function pseudo_est_dispo($pseudo)
{
   bdd();
   global $prefix_table;
   
   $pseudo = mysql_real_escape_string(htmlspecialchars($pseudo));
   $sql = mysql_query("SELECT * FROM ".$prefix_table."membres WHERE pseudo = '".$pseudo."' LIMIT 0,1");
   
   if(mysql_num_rows($sql) == 1)
      return FALSE;
   else
      return TRUE;
} //end pseudo_est_dispo()
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut