Requete

gilles
Invité n'ayant pas de compte PHPfrance

21 sept. 2005, 21:36

salut,
j'ai un probléme simple (je débute)

j'ai le programme suivant

USER_Pseudo et $USER_password provient d'avant dans le programme
$Query="SELECT $TABLE_col3 FROM $MYSQL_table WHERE $TABLE_col2 ='$USER_Pseudo'";
$Exist=mysql_fetch_array(mysql_query($Query,$link));

if($Exist[0]==md5($USER_Password))
{	
// utilisateur existe et le mot de passe est le bon
}

$table_col2 contient les nom utilisateur

mon probléme est le suivant

si dans ma table j'ai comme nom utilisateur "maurice"

et que USER_Pseudo est "Maurice" le programme me trouve bien maurice dans la table.....

je souhaite que si le nom utilisateur n'est pas 100% le même c'est a dire majuscule et minuscule respecté la requete ne me retourne pas de resultat. comment faire ?

Mammouth du PHP | 983 Messages

21 sept. 2005, 21:50

salut gilles,

Tout d'abord, je ne comprends pas pourquoi tu ne selectionnes pas les lignes dont le pseudo et le password correspondent à ceux saisis. Tu peux réaliser cela en faisant:
$Query='SELECT count(*) as nbrow
FROM '.$MYSQL_table .'
WHERE '.$TABLE_col2.'=\''.$USER_Pseudo.'\' 
AND '.$TABLE_col3.'=\''.md5($USER_Password).'\'';

$Exist=mysql_fetch_array(mysql_query($Query,$link));

if($Exist['nbrow']>0)
{    
// utilisateur existe et le mot de passe est le bon
}

Ensuite, je ne vois pas comment en saisissant "maurice", la requete:

Code : Tout sélectionner

SELECT password FROM table WHERE pseudo='Maurice'
puisse retourner un résultat car mysql est case sensitive pour les valeurs des VARCHAR.

Essaies d'afficher la requete générée pour voir si elle est bien formée.

Je pense que cela vient du fait que tu fais un fetch_array et qu'ensuite tu appelles $Exist[0]...

gilles
Invité n'ayant pas de compte PHPfrance

21 sept. 2005, 22:13

Merci ta réponse, j'ai modifié ma requette en suivant ton conseil, mais cela marche toujours de la même façon.

je me suis donc mis sur la console mysql et j'ai lancé:

Code : Tout sélectionner

SELECT password FROM table WHERE pseudo='Maurice'
et

Code : Tout sélectionner

SELECT password FROM table WHERE pseudo='maurice'
et même résultat dans les deux cas j'ai le même résultat ...

Eléphant du PHP | 199 Messages

21 sept. 2005, 22:16

Petite information : par convention on utilise des minuscules en 1e lettre pour les variables, la 1e lettre en majuscule pour les classes et que des majuscules pour les constantes :wink:
Les 2 font la paire : coder ET commenter :wink:

Mammouth du PHP | 983 Messages

21 sept. 2005, 22:46

Tu n'as pas 2 utilisateurs différents dont un a le pseudo 'maurice' et l'autre 'Maurice'?

Gilles
Invité n'ayant pas de compte PHPfrance

22 sept. 2005, 00:13

Non non je te rassure

Mammouth du PHP | 1029 Messages

22 sept. 2005, 10:03

Et le résultat sors avec ou sans majuscule?
L'expérience est la somme de toutes nos erreurs.

Tho
Eléphant du PHP | 58 Messages

22 sept. 2005, 10:49

Je crois que ça dépend du système où est installée la base.
Windows : insensible.
Linux : sensible.

gilles
Invité n'ayant pas de compte PHPfrance

22 sept. 2005, 16:31

le resultat sort dans les deux cas sans majuscule ...
ma base est hebergée chez Free

Mammouth du PHP | 1029 Messages

22 sept. 2005, 16:44

et ceci donne quoi comme résultats
$Query='SELECT count(*) as nbrow
FROM '.$MYSQL_table .'
WHERE '.$TABLE_col2.'=\''.$USER_Pseudo.'\'  GROUP BY  $USER_Pseudo
L'expérience est la somme de toutes nos erreurs.

Gilles
Invité n'ayant pas de compte PHPfrance

23 sept. 2005, 09:28

résultat nbrow=1