LIKE %% dans un champs qui contient de l'HTML

Résolu
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 - 3 déc. 2010 à 14:35
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 - 8 déc. 2010 à 11:33
Bonjour à tous !

Voici mon problème.

J'ai un champs longtext en BDD qui contient du code HTML (générer par un editeur WYSIWYG)

je souhaiterai faire une recherche sur ce champs en utilisant LIKE "%xx%" le problème est le suivant :

Admétons que je recherche "bonjour"

et que dans ma BDD j'ai sa qui est renseigner :

"Bonjour"

autrement dit : Bonjour

Comment faire j'ai fait des recherche de REGEXP_REPLACE ou un strip_tags spécial mySQL, mais je trouve rien

quelqu'un pourrait-il m'orienté ?

D'avance merci,

L0rD...

4 réponses

xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
8 déc. 2010 à 11:33
Pour ce que sa interesse il existe une procédure a déclare dans MySQL pour pouvoir faire ce genre de requête la voici

USE NOM_BDD_ICI
SET GLOBAL log_bin_trust_function_creators=1;
DROP FUNCTION IF EXISTS fnStripTags;
DELIMITER |
CREATE FUNCTION fnStripTags( Dirty varchar(4000) )
RETURNS varchar(4000)
DETERMINISTIC
BEGIN
 DECLARE iStart, iEnd, iLength int;
 WHILE Locate( '<', Dirty ) > 0 And Locate( '>', Dirty, Locate( '<', Dirty )) > 0 DO
   BEGIN
     SET iStart Locate( '<', Dirty ), iEnd Locate( '>', Dirty, Locate('<', Dirty ));
     SET iLength = ( iEnd - iStart) + 1;
     IF iLength > 0 THEN
       BEGIN
         SET Dirty = Insert( Dirty, iStart, iLength, '');
       END;
     END IF;
   END;
 END WHILE;
 RETURN Dirty;
END;
|
DELIMITER ;


et ensuite peut s'utiliser aisaiment sur la BDD déclarer de cette manière

SELECT * FROM `table` WHERE fnStripTags(`champ`) LIKE "%bonjour%"

fnStripTags va se charger de strip_tags le contenu HTML du champ

L0rD...
3
cs_ludwig59 Messages postés 128 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 6 mai 2011 2
3 déc. 2010 à 14:38
Bonjour,

Personnellement, je ne sais pas si c'est la bonne méthode, mais lorsque j'enregistre ce genre de champ en BDD, je crée un 2ème champ qui contient le contenu sans le html (avec strip_tags) que j'utilise pour les requêtes de recherche.
0
cs_ludwig59 Messages postés 128 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 6 mai 2011 2
3 déc. 2010 à 14:40
De plus,
Après avoir supprimé les balise html avec strip_tags, j'utilise html_entity_decode pour enregistrer les accents non encodé.
0
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
3 déc. 2010 à 14:40
Oui j'y es songé... mais j'ai déjà plein de champs déjà :) et j'ai énormement ce genre de champs ! donc je préfèrerai une autre solution si possible

merci,


L0rD...
0
Rejoignez-nous