Recherche approximative [Résolu/Fermé]

Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
- - Dernière réponse : 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.
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
87
Date d'inscription
jeudi 21 juin 2012
Statut
Membre
Dernière intervention
2 septembre 2016
6
3
Merci
Salut, j'ai trouvé ça :

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

Je me suis pas vraiment penché dessus, mais dis moi si ça marche :)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 69326 internautes nous ont dit merci ce mois-ci

Messages postés
217
Date d'inscription
dimanche 22 juillet 2012
Statut
Membre
Dernière intervention
1 octobre 2013
49
0
Merci
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,
Messages postés
217
Date d'inscription
dimanche 22 juillet 2012
Statut
Membre
Dernière intervention
1 octobre 2013
49
0
Merci
Oui c'est beaucoup mieux !

Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
0
Merci
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.
MichaelOfCourse
Messages postés
87
Date d'inscription
jeudi 21 juin 2012
Statut
Membre
Dernière intervention
2 septembre 2016
6 -
Je ne vois pas ou est le problème. Relis bien l'article il permet de faire exactement ce que tu demande :)
Messages postés
217
Date d'inscription
dimanche 22 juillet 2012
Statut
Membre
Dernière intervention
1 octobre 2013
49
0
Merci
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.
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
0
Merci
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.
http://fr2.php.net/manual/fr/book.enchant.php
Messages postés
2483
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
214
0
Merci
Salut,

Le "LIKE" avec un "COLLATE" existent pour faire ce genre de recherches approximatives.
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
0
Merci
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
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
0
Merci
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 :
http://www.php.net/manual/fr/refs.international.php

Sujet résolu.

Merci