Recherche approximative

Résolu/Fermé
janmar Messages postés 148 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 - 1 sept. 2013 à 21:03
janmar Messages postés 148 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 - 3 sept. 2013 à 10:08


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 jeudi 21 juin 2012 Statut Membre Dernière intervention 2 septembre 2016 6
2 sept. 2013 à 09:00
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 dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
2 sept. 2013 à 08: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 dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
2 sept. 2013 à 09:04
Oui c'est beaucoup mieux !

0
janmar Messages postés 148 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
2 sept. 2013 à 16:32
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 jeudi 21 juin 2012 Statut Membre Dernière intervention 2 septembre 2016 6
2 sept. 2013 à 21:43
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 dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
2 sept. 2013 à 17:04
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 vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
2 sept. 2013 à 17:19
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 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
2 sept. 2013 à 18:09
Salut,

Le "LIKE" avec un "COLLATE" existent pour faire ce genre de recherches approximatives.
0
janmar Messages postés 148 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
2 sept. 2013 à 18:22
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 vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
3 sept. 2013 à 10:08
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