Problème d'accents pour un moteur de recherche

Messages postés
21
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
1 septembre 2005
- - Dernière réponse : tbbuim1
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
- 1 sept. 2005 à 17:49
Bonjour,



Je réalise un moteur de recherche par php sur une base Oracle7 (oui je sais c'est très vieux mais j'ai pas le choix)

lorsque je tape par exemple le mot "evenement" il me retourne "evenement" mais pas "événement" "évènement" ...

Voila à quoi ressemble ma requête :



$req="SELECT reference_origine, commentaire,
code_commentaire, projet FROM doc_commentaire WHERE commentaire
LIKE '%$tab[0]%' ";

(la chaine de caractère est dans $tab[0])



j'ai essayé avec upper en espérant qu'en mettant tout en maj les accent disparaitraient mais que néni

$req="SELECT reference_origine,
commentaire, code_commentaire, projet FROM doc_commentaire WHERE
upper(commentaire) LIKE upper('%$tab[0]%') ";



J'ai essayé aussi de mettre tous les eéèêëÈÉÊË en e et ensuite detecté
dans le mot la lettre e pour la remplacer par "[eeéèêëÈÉÊË]"

ce qui donnerait pour evenement:
"[eeéèêëÈÉÊË]v[eeéèêëÈÉÊË]n[eeéèêëÈÉÊË]m[eeéèêëÈÉÊË]nt" . Mais ça
marche pas le code n'est pat compris pour la requête



j'ai ensuite fait de même mais à la place de remplacer tous les e par
"[eeéèêëÈÉÊË]" je les ai remplacer par "_". Ce qui donnait _v_n_m_nt et
à l'exécution ca m'affichait tous les resultats des chaines de
caractères avec la présence des lettres "v" "n", "m" et "nt" .



Aidez moi................;!!!!!!!!!!!!!!!!!!!!

Chocholman
Afficher la suite 

7 réponses

Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
0
Merci
Salut,



Ca marche tout seul avec MySQL !

Je ne t'aide pas beaucoup là, hein?
Commenter la réponse de J_G
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
0
Merci
lool

je ne vais pas t'aider bcp non plus en te disant qu'il y a tt le temps
des gens qui posent la même question que toi, donc forcément la réponse
doit être qq part mdr



plus sérieusement j'ai déjà vu des fonctions php qui résolvait ça mais
je n'ai pas gardé les liens, tape "accents base de données" dans google
et tu devrais retrouver.
Commenter la réponse de Evangun
Messages postés
21
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
1 septembre 2005
0
Merci
Bah merci les gars

Mais ça fait 2 jours que je cherche sur le net et toujours rien... J'ai
cherché pour avoir des codes sql (le pourait se résoudre par le sql)
mais rien non plus. Et comme je ne trouve pas de site enumérant les
fonction sql pour oracle7, j'ai du mal. Je suis sûr qu'il y a une
solution, du coté de WHERE mais je coince vraiment.




Chocholman
Commenter la réponse de chocholman
Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
Hello,



je connais mal plsql, mais il doit y avoir la gestion des expressions régulières. Cela pourrait t'aider.

Sinon je ne vois que la solution très lourde de sortir toutes les
possibilités pour ton mot, et de faire ton where like avec des or sur
chaque version de ce mot.
Commenter la réponse de malalam
Messages postés
861
Date d'inscription
mardi 26 mars 2002
Statut
Membre
Dernière intervention
29 novembre 2006
1
0
Merci
Sael og blesud



De mémoire il y a une option dans le conf d'oracle qui permet de gérer
cela; dans la section charset; maintenant je me souviens de cela dans
la version 8 et non pas la 7 ... ;-) Je vais voir si je retrouve mais
il me faut réinstaller oracle ... ;-) ... Mais vous pouvez regarder par
là ...

Bon courage ...

NB : Si la réponse vous convient merci de l'accepter pour fermer ce thread ...

Sigurjón Bírgir Sigurðssón aka Sjón
Commenter la réponse de cs_sjon
Messages postés
21
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
1 septembre 2005
0
Merci
Merci pour aide Sjon mais en fait je ne peux pas modifier quoique se
soit sur la base. Je peux juste la consulter donc à partir de là je
dois retrouver une fonction sql ou un code php qui ne mettrait à mettre
trop de temps pour chercher les bons mots (ma base contient 54000
enregistrements et les mots sont recherché dans un commentaire qui peut
comprendre jusqu'à 2000 lettres)

Chocholman
Commenter la réponse de chocholman
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
7
0
Merci
J'ai peut être une idée à te soumettre.



Il faudrait simplement que tu formates la saisie avant de lancer la requête.

Il suffirait de remplacer toutes les lettres qui peuvent avoir des accents

comme le E par "_"

Ainsi ça ferait un truc du genre

select * from table where mot LIKE "_V_N_M_NT"

Donc il te sortirait forcément évènement, Evènement, evenement...
Voilà, à toi de jouer!

TBBUIM
Commenter la réponse de tbbuim1