Page 1 sur 1

Requete

Posté : 21 sept. 2005, 21:36
par gilles
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 ?

Posté : 21 sept. 2005, 21:50
par rami
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]...

Posté : 21 sept. 2005, 22:13
par gilles
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 ...

Posté : 21 sept. 2005, 22:16
par smarties
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:

Posté : 21 sept. 2005, 22:46
par rami
Tu n'as pas 2 utilisateurs différents dont un a le pseudo 'maurice' et l'autre 'Maurice'?

Posté : 22 sept. 2005, 00:13
par Gilles
Non non je te rassure

Posté : 22 sept. 2005, 10:03
par Maitrepylos
Et le résultat sors avec ou sans majuscule?

Posté : 22 sept. 2005, 10:49
par Tho
Je crois que ça dépend du système où est installée la base.
Windows : insensible.
Linux : sensible.

Posté : 22 sept. 2005, 16:31
par gilles
le resultat sort dans les deux cas sans majuscule ...
ma base est hebergée chez Free

Posté : 22 sept. 2005, 16:44
par Maitrepylos
et ceci donne quoi comme résultats
$Query='SELECT count(*) as nbrow
FROM '.$MYSQL_table .'
WHERE '.$TABLE_col2.'=\''.$USER_Pseudo.'\'  GROUP BY  $USER_Pseudo

Posté : 23 sept. 2005, 09:28
par Gilles
résultat nbrow=1