Recherche de mots dans une BDD avec et sans html

Recherche de mots dans une BDD avec et sans html - PHP - Programmation

Marsh Posté le 02-08-2006 à 13:38:09    

Salut,
 
J'ai un problème ( :sweat: ) pour lequel j'ai une solution ( :) ) qui ne marche pas ( :D )
 
Le problème : Dans une table d'une base de données, j'ai différents champs dont un "titre" de type varchar et un "contenu" de type text. Dedans j'ai du texte pouvant contenir des mots accentués de la forme "découper" ou "découper". Donc si dans le moteur de recherche que je code, je dois rechercher le mot "découper", il trouve l'un mais pas l'autre.
 
Une solution : Exécuter un requête qui recherche aussi bien "découper" que "découper" en utilisant cette requête :
SELECT * FROM matable WHERE LOWER(contenu) LIKE "%découper%" OR LOWER(contenu) LIKE "%découper%"
 
Marche pas : C'est là que je capte pas puisque quand on saisit le mot, je parviens à le récupérer correctement mais pas moyen de faire la requête avec le mot sous sa forme saisie et la forme avec htmlentities. Je fais ceci :
 
$sql = 'SELECT * FROM matable WHERE LOWER(contenu) LIKE "%'. $mot .'%" OR LOWER(contenu) LIKE "%'. htmlentities($mot) .'%"
 
Et cette requête me retourne kedal. Et en l'affichant à l'écran par un echo, les 2 mots sont de la forme "découper" et non l'un avec accent et l'autre avec l'entité...
 
Est-ce que la méthode est bonne ?

Reply

Marsh Posté le 02-08-2006 à 13:38:09   

Reply

Marsh Posté le 02-08-2006 à 13:52:33    

1- tu te décides un fois pour toute, soit tu stockes tes champs "tel quel avec les accents" ( solution généralement préconisé quand les données sont le plus souvent accèdées en ecriture/modification, attention au charset de ta base, tes scripts et de ton html) soit tu stockes tes champs htmlisés ( solution préconisée quand la plupart de tes accès sont font en lecture, tu evites ainsi de retraiter les resultats de ta requête sql)
2-tu utilises les Full-Text Search Functions ( tu trouveras dans la doc) pour ce genre de recherche
3- tu arrêtes de t'étonner que:

Code :
  1. print "Découper";
  2. print "Découper";


affiche la même chose dans ton navigateur... Regarde le code source de ta page html plutôt

Reply

Marsh Posté le 02-08-2006 à 14:41:49    

anapajari a écrit :

1- tu te décides un fois pour toute, soit tu stockes tes champs "tel quel avec les accents" ( solution généralement préconisé quand les données sont le plus souvent accèdées en ecriture/modification, attention au charset de ta base, tes scripts et de ton html) soit tu stockes tes champs htmlisés ( solution préconisée quand la plupart de tes accès sont font en lecture, tu evites ainsi de retraiter les resultats de ta requête sql)


En ce qui concerne le champ "titre", c'est stocké avec les accents, par contre pour le champ "contenu" il s'agit de textes générés par FCK Editor. Alors je vais voir s'il est possible de lui dire de mettre avec les accents plutôt qu'avec les entités.

anapajari a écrit :


2-tu utilises les Full-Text Search Functions ( tu trouveras dans la doc) pour ce genre de recherche


Je vais voir ça.

anapajari a écrit :


3- tu arrêtes de t'étonner que:

Code :
  1. print "Découper";
  2. print "Découper";


affiche la même chose dans ton navigateur... Regarde le code source de ta page html plutôt


C'est le détail que j'ai oublié de préciser dans le 1er post, il s'agit de la requête lorsque je regarde le code source, mais pourquoi ce ton ?
 
Merci pour ta participation.

Reply

Marsh Posté le 02-08-2006 à 15:42:13    

anapajari a écrit :

2-tu utilises les Full-Text Search Functions ( tu trouveras dans la doc) pour ce genre de recherche


-> Un grand merci pour ça que je ne connaissais pas, c'est très puissant et parfait pour ce que j'ai à faire :hello:  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed