Recherche approximative

Résolu
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   -  
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   -


Bonsoir,
Je renouvelle ma question déjà posée, mais vue sous un angle un peu différent :

Sur mon site, les utilisateurs s'inscrivent eux-mêmes. J'ai un problème pour les prénoms :
Rien n'empêche une utilisatrice d'inscrire son prénom sous la forme Hélene.
Il manque l'accent grave sur le deuxième e , et moi, je ne le sais pas.
Evidemment une recherche avec Hélène ne marchera pas, pas plus qu'avec Helene.
Comment faire une recherche approximative évitant les accents ?
Il existe bien la solution de supprimer tous les accents, mais ce n'est pas du bon français !...
Merci de votre aide.

9 réponses

MichaelOfCourse Messages postés 87 Date d'inscription   Statut Membre Dernière intervention   6
 
Salut, j'ai trouvé ça :

http://johannes-fetz.blogspot.com/2009/10/select-non-sensible-aux-accents-avec.html

Je me suis pas vraiment penché dessus, mais dis moi si ça marche :)
3
juliencolin54 Messages postés 217 Date d'inscription   Statut Membre Dernière intervention   55
 
Bonjour,

T'es pas obligé de supprimer tous les accents.
Si t'as une fonction
String sansAccent(String)
Au lieu de comparer "Hélene" avec tous les "prénoms" de la BDD, tu compares sansAccent("Hélene") avec tous les sansAccents("prénoms").
Il faut juste que tu associe à chaque sansAccent("prénoms"), le "prénoms" qui correspond pour que tu ressortes finalement celui avec les accents.

Redis moi si ça te parait pas clair ;)

Cdlt,
0
juliencolin54 Messages postés 217 Date d'inscription   Statut Membre Dernière intervention   55
 
Oui c'est beaucoup mieux !

0
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
Je te remercie de ta réponse, seulement j'y vois un gros problème :
Je ne sais pas à priori quels sont les prénoms qui vont s'inscrire. Cela peut être Adélaïde, Hélène, Danièle, Danielle, Maëlle etc... Donc, je ne peux à priori faire une association de sansaccent('prenoms') avec le prénom correct, ou alors je dois prévoir tous les prénoms du dictionnaire !........

En fait, mon problème est encore mal posé.

Un internaute s'inscrit librement sur mon site. Il fait une faute de frappe sans le vouloir et enregistre son prénom = Helène par exemple.
Cela posera forcément un problème lors de recherches ultérieures.
Je sais bien que je peux associer le nom et le prenom et faire une recherche sur les deux avec un OU, mais je pourrais trouver différentes fiches avec des orthographes différentes, ce qui prêterait à confusion.

("SELECT Nom,Prenom FROM identite WHERE Nom = '$nom' OR Prenom = '$prenom' ");


Je risque fort de me retrouver avec :
DUPONT Hélène
DUPONT Helène
DUPONT Hélene

L'idéal serait que je puisse comparer le prénom dans un dictionnaire, pour donner le choix d'orthographe AVANT l'enregistrement dans la bdd.
Mais ça, ça me parait bien compliqué !....

Je crois que je vais me résoudre à enregistrer le prénom mal orthographié, et à adapter mes recherches en combinant le nom et le prénom.

En tous cas, merci de ton aide.
0
MichaelOfCourse Messages postés 87 Date d'inscription   Statut Membre Dernière intervention   6
 
Je ne vois pas ou est le problème. Relis bien l'article il permet de faire exactement ce que tu demande :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
juliencolin54 Messages postés 217 Date d'inscription   Statut Membre Dernière intervention   55
 
Si j'ai bien compris, tu veux vérifier une saisie utilisateur.

Mais si quelqu'un s'appelle Héléne, où qu'un nouveau prénom vient au monde (avec le corps qui va avec bien-sûr).
Il ne sera pas dans ta base, tu lui refuse l'accès ?

Au passage les navigateur les plus développés aujourd'hui ont un très bon dictionnaire.
0
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
Ta réponse m'intéresse.
"Les navigateurs les plus développés ont un très bon dictionnaire"
Y aurait-il un moyen de comparer la saisie avec le dictionnaire ?

J'ai aussi entendu parler de l'addon ENCHANT pour PHP, mais je ne comprends pas bien son utilisation. Il semble que ce soit un dictionnaire ?? mais la doc PHP est difficile à comprendre.
https://www.php.net/manual/fr/book.enchant.php
0
JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
Salut,

Le "LIKE" avec un "COLLATE" existent pour faire ce genre de recherches approximatives.
0
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
Merci pour ta réponse.
J'ai un peu parcouru ce qu'est un LIKE et un COLLATE.
Ça ne m'a pas inspiré du premier coup !.....
Je vais approfondir cela.
Merci
0
janmar Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   3
 
Exact, c'est bien ce qu'il me faut pour mon problème.
Je te remercie d'avoir insisté, je ne serai pas revenu voir sur ces fonctions, j'avais eu une mauvaise impression au début.
Par ailleurs, j'ai découvert des fonctions assez amusantes et qui peuvent rendre service :
https://www.php.net/manual/fr/refs.international.php

Sujet résolu.

Merci
0