PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 01-12-2009 09:41:10

ammesiah
Membre
Inscription : 13-11-2009
Messages : 14

[aide] Recherche de nom

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 tongue

D'avance merci
Amm

Hors ligne

#2 01-12-2009 10:02:23

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : [aide] Recherche de nom

un truc du genre
"select * from membres WHERE ucase(login)=ucase($login1)";

a++

Hors ligne

#3 01-12-2009 10:17:50

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : [aide] Recherche de nom

Ou alors, avec strtoupper()


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#4 01-12-2009 15:36:55

nicolas
Membre
Inscription : 11-11-2009
Messages : 69
Site Web

Re : [aide] Recherche de nom

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.

Hors ligne

#5 01-12-2009 18:27:34

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : [aide] Recherche de nom

nicolas a écrit :

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. wink

Hors ligne

#6 01-12-2009 20:34:47

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [aide] Recherche de nom

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

#7 01-12-2009 21:43:54

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : [aide] Recherche de nom

on dit pas "caster" roll
on dit "castrer" big_smile







































































trop tard, chui plus là big_smile
a++

Hors ligne

#8 02-12-2009 07:09:01

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : [aide] Recherche de nom

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

#9 02-12-2009 08:25:24

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [aide] Recherche de nom

colonne LIKE "%michel%"

retourne aussi bien 'Michèle' que 'MICHEL' que 'micheline'
alors que

BINARY colonne  LIKE "%michel%"

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

#10 02-12-2009 10:37:54

ammesiah
Membre
Inscription : 13-11-2009
Messages : 14

Re : [aide] Recherche de nom

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

#11 02-12-2009 18:08:54

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : [aide] Recherche de nom

Maljuna Kris a écrit :
colonne LIKE "%michel%"

retourne aussi bien 'Michèle' que 'MICHEL' que 'micheline'
alors que

BINARY 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

#12 02-12-2009 18:37:30

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [aide] Recherche de nom

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

#13 02-12-2009 20:27:51

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : [aide] Recherche de nom

Hum d'accord, merci pour la citation Kris.

/me se couchera moins bête ce soir.

Hors ligne

Pied de page des forums