Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/09/2006, 18h38   #1
Invité de passage
 
Inscription : septembre 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 2
Points : 1
Points : 1
Par défaut Moteur recherche & stockage texte caractère spéciaux htm

Salut,

je travaille actuellement à un petit moteur de recherche sur un site en php/mysql

et je me trouve confronté à ce problème :

je stocke mes données texte dans la base, aprés avoir transformé tous les caractères spéciaux dans leur equivalent html, ceci à l'aide de la fonction php : htmlentities() ce que tout le monde conseille apparemment...

j'ai ensuite un champ de recherche, dont je récupère la valeur (aprés l'avoir passée par htmlentities), et que j'envois dans une requete mysql de type fulltext (bien pratique pour la pertinence des résultats!)

jusque là tout va bien, si je recherche étoile (avec un accent), et que le mot étoile est trouvé dans la base, ca marche

MAIS si je recherche etoile (sans accent!!!) je n'ai bien entendu aucuns résultat

hors, je pense qu'il y'a plus de probalilité que les visiteurs fassent des recherches sur des expressions sans les accents que le contraire

mon moteur n'est donc pas valide !

je me dis qu'il y'a peut être une fonction dispo dans mysql qui permet de passer outre ce problème, du genre -> une requete qui serait capable de comparer l'expression voulue avec celles contenues dans la base AVEC et SANS les caractères spéciaux (le é serait remplacé par le e, è par e, ç par c ...etc...)

j'ai bien cherché dans les fonctions sur les chaines de caractère de mysql, mais je n'ai rien trouvé

quelque developpeur aurait-il un indice ?

Clt,
Antoine
tonidev37 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2006, 08h07   #2
Membre Expert
 
Avatar de zoom61
 
Homme Vincent ...
Passionné d'informatique
Inscription : janvier 2005
Messages : 1 217
Détails du profil
Informations personnelles :
Nom : Homme Vincent ...
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations professionnelles :
Activité : Passionné d'informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2005
Messages : 1 217
Points : 1 506
Points : 1 506
Envoyer un message via Yahoo à zoom61 Envoyer un message via Skype™ à zoom61
Salut,

Tu pourrais peut-être résoudre ton problème avec la fonction str_replace.

@+.
__________________
N'oubliez pas le Tag :

C'est en parvenant à nos fins par l'effort, en étant prêt à faire le sacrifice de profits immédiats en faveur du bien-être d'autrui à long terme, que nous parviendrons au bonheur caractérisé par la paix et le contentement authentique. [Dalaï Lama]
Je ne réponds pas aux messages privés s'ils sont liés à une question du forum

Mon site sur Developpez.com
zoom61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2006, 13h23   #3
Invité de passage
 
Inscription : septembre 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 2
Points : 1
Points : 1
je crois que je n'ai pas expliqué de facon assez détaillée ma démarche,

c'est sur le contenu de la base que j'ai besoin d'effectuer cette action et ce, à l'interieur d'une requete sql

connaissez vous les requêtes FULLTEXT de mysql ?

voici ma requête :
Code :
1
2
3
4
 
SELECT *, MATCH (libelle,  description) AGAINST ('".$recherche."') AS cpt
 
FROM  article

libelle et description sont les 2 champs de la base sur lesquels je veux que la recherche s'effectue

$recherche est le champ saisi par l'internaute

le résultat de cette requete donne les enregistrements contenant l'expression $recherche

(avec la possibilité par la suite de les classer suivant le nombre d'occurences trouvées pour chaque enregistrement, c'est tout l'intérêt de cette formule)


dans les champs libelle et description, le texte est enregistré avec les equivalents html
le mot étoile, s'y trouve donc sous cette forme : étoile
alors, si je recherche etoile (sans accent)
la requete ne trouve rien, mon moteur n'est donc pas valide...
tonidev37 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2006, 15h38   #4
Membre Expert
 
Avatar de zoom61
 
Homme Vincent ...
Passionné d'informatique
Inscription : janvier 2005
Messages : 1 217
Détails du profil
Informations personnelles :
Nom : Homme Vincent ...
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations professionnelles :
Activité : Passionné d'informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2005
Messages : 1 217
Points : 1 506
Points : 1 506
Envoyer un message via Yahoo à zoom61 Envoyer un message via Skype™ à zoom61
Tu peux aller voir la question suivante :
SET ... REPLACE() de MySQL
__________________
N'oubliez pas le Tag :

C'est en parvenant à nos fins par l'effort, en étant prêt à faire le sacrifice de profits immédiats en faveur du bien-être d'autrui à long terme, que nous parviendrons au bonheur caractérisé par la paix et le contentement authentique. [Dalaï Lama]
Je ne réponds pas aux messages privés s'ils sont liés à une question du forum

Mon site sur Developpez.com
zoom61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h16.


 
 
 
 
Partenaires

Hébergement Web