Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/10/2014, à 17:11

alex.jdgworld

[RESOLU] Probleme comparaison chaines avec accents dans requete Mysql

Bonjour à Tous

dans Mysql j'ai une table user avec dedans ceci :

name = FRéDéRIC pour FRéDéRIC

et j'ai un fichier qui contient FREDERIC sans accent

je lis le fichier en php et pour chaque enregistrement du fichier
je souhaite rechercher si il existe deja dans la table
et je n'y arrive pas .....
j'ai fait ceci mais cela ne fonctionne pas

$var_name_fichier = 'FREDERIC';
query_string = "select user_id , name
from user
WHERE name ='".$var_name_fichier."'";

comment puis je faire ?

D'avance merci a tous les GEEKS

Alex

Dernière modification par alex.jdgworld (Le 18/10/2014, à 10:14)

Hors ligne

#2 Le 17/10/2014, à 22:33

αjet

Re : [RESOLU] Probleme comparaison chaines avec accents dans requete Mysql

Si tu lis un peu l'anglais, ca devrait t'aider un peu: http://stackoverflow.com/questions/1083 … e-in-utf-8

En resume:
1. Utlilise une collation insensible aux accents telle que utf8_general_ci pour ta colonne name.
2. Au lieu d'y mettre les entite html telle que é fait attention a bien stoquer le caractere correspondant a la place. Au besoin utilise une fonction html pour convertir les caractere accentues dans ta page html: http://php.net/manual/en/function.htmlspecialchars.php. Mieux, utilise un encodage tel que utf8 si possible pour eviter ce genre de probleme.
3. Dans ton select, utilise l'operateur LIKE a la place de = dans la clause WHERE.

Dernière modification par αjet (Le 17/10/2014, à 22:33)


αjet: ça se prononce alfajet, bordel ! | GMT+1 | Viens poueter avec moi, bordel ! | Mes photos | Shaarli | Fluidbuntu-fr

Hors ligne

#3 Le 18/10/2014, à 10:13

alex.jdgworld

Re : [RESOLU] Probleme comparaison chaines avec accents dans requete Mysql

Bonjour

Merci αjet

j'ai fait plein d'essai avec les collations insensibles
mais pas réussi et je n'ai pas la possibilité de changer la methode de stockage dans la base,
c'est une base dont j'ai hérité telle quelle.....

par contre

j'ai résolu le probleme de cette maniere :

$var_name_fichier = 'FREDERIC';
query_string = "select user_id ,
UPPER(
                                        REPLACE(
                                          REPLACE(
                                            REPLACE(
                                              REPLACE( name, 'é' , 'E' ),
                                            'ç', 'C'),
                                          'è', 'E'),
                                        '-', ' ')
) as f_name
from user
WHERE
UPPER(
                                        REPLACE(
                                          REPLACE(
                                            REPLACE(
                                              REPLACE( name, 'é' , 'E' ),   ///// pour é
                                            'ç', 'C'),   ///// pour ç
                                          'è', 'E'),   ///// pour è
                                        '-', ' ')   ///// pour -
)  ='".$var_name_fichier."'";

il n'y avait pas d'autres caracteres accentués donc j'ai fais le minimum

Merci
ALEX

Dernière modification par alex.jdgworld (Le 18/10/2014, à 10:37)

Hors ligne

#4 Le 18/10/2014, à 14:37

αjet

Re : [RESOLU] Probleme comparaison chaines avec accents dans requete Mysql

Content que tu te sois debrouille. Juste une remarque, cette aproche risque d'etre difficile a maintenir. Par exemple si tu as la possibilite de faire des modifications sur le schema, il serait peut etre judicieux de rajouter un champ dans ta table user pour y enregistrer le nom sans accent, par exemple name_noaccent que tu utiliserait pour ta requete. Il faudrait aussi faire en sorte que cette colonne soit mise a jour si la valeur de name change.


αjet: ça se prononce alfajet, bordel ! | GMT+1 | Viens poueter avec moi, bordel ! | Mes photos | Shaarli | Fluidbuntu-fr

Hors ligne

#5 Le 23/10/2014, à 15:30

alex.jdgworld

Re : [RESOLU] Probleme comparaison chaines avec accents dans requete Mysql

Salut αjet

merci αjet pour ton conseil de champ en double no_accent.
Mais je n'en aurai pas besoin : j'avais un fichier a inserrer dans une base deja aliment"e.
c'etait pour ne pas avoir de doublon, et comme le fichier ne contenait pas mail , j'ai du comparer avec les noms prénoms.

Merci encore
Alex

Hors ligne