Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour,
J'aimerais savoir svp quelle est la meilleur solution pour faire une recherche dans une base sans distinction des majuscules et des minuscule car ma requète actuelle :
$select = "select * from membres WHERE login='$login1'";
$result = mysql_query($select) or die (''.mysql_error() );
while($row = mysql_fetch_array($result )) {$loginC= $row['login'];}
Fait que si une personne essaye de créer un pseudo comme Thomas la requête va rechercher Thomas sans ce soucié des pseudo déjà créer comme thomas ou thomaS enfin bref ça me fait un petit bazar dans la base
D'avance merci
Amm
Hors ligne
un truc du genre
"select * from membres WHERE ucase(login)=ucase($login1)";
a++
Hors ligne
Ou alors, avec strtoupper()
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne
Par défaut les champs texte de mysql sont insensibles à la casse. Pour pallier au problème tu ajoutes binary dans la définition de ton champ ou lors de la requête.
Les noms d'attribut et non leur contenu.
Hors ligne
Non, nicolas a raison, en MySQL par défaut l'opérateur LIKE, par exemple, n'est pas sensible à la casse pour le contenu des colonnes.
La solution consiste, effecitvement, à "caster" la requête avec BINARY
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
on dit pas "caster"
on dit "castrer"
trop tard, chui plus là
a++
Hors ligne
Hum donc si on utilise un "=" il faut caster la requête en binary afin qu'elle puisse ne faire aucune différence entre majuscules/minuscules ?
Ou bien utiliser un LIKE qui le fait tout seul (pas besoin de cast) ?
Hors ligne
retourne aussi bien 'Michèle' que 'MICHEL' que 'micheline'
alors que
ne retournera que 'micheline'
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Merci pour vos réponses^^
J'ai tester BINARY directement dans la base et le résultat avait curieusement pour effet inverse de me retourner sur une recherche de %michel% que michel et non pas MICHEL ou MICHELINE.
Pour palier déjà au fait d'avoir des Thomas ou thomas ou ThOmas j'ai rajouter l'option unique qui fait qu'à présent qu'importe la façon dont thomas est écris il ne sera pris en compte qu'une fois.
ça par contre j'ai déjà tester : colonne LIKE "%michel%"
cela me retourne bien Michel, michel, Micheline j'utilise cette fonction sur mon system de recherche.
Je vais tester BINARY en requête : BINARY colonne LIKE "%michel%"
Cordialement.
Amm
Hors ligne
colonne LIKE "%michel%"retourne aussi bien 'Michèle' que 'MICHEL' que 'micheline'
alors queBINARY colonne LIKE "%michel%"ne retournera que 'micheline'
Ok, c'est bon à savoir.
Par contre qu'en est-il de l'opérateur = ? Est-il sensible à la casse ?
Car c'était ce que l'auteur de ce topic utilisait d'où mon interrogation.
Hors ligne
Extrait de la doc MySQL
Par défaut, la comparaison des chaînes s'effectue d'une façon insensible à la casse en utilisant le jeu de caractères courant (ISO-8859-1 Latin1 par défaut, qui fonctionne aussi très bien pour l'anglais).
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Pages :: 1