SEARCH QUERY COMPOSER

Messages postés
389
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009
- - Dernière réponse : astro53
Messages postés
48
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
5 août 2009
- 7 août 2009 à 10:32
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50414-search-query-composer

Afficher la suite 
cs_garfield90
Messages postés
389
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009
-
y a plus simple voire plus propre.

function search_query_composer($search,array $title){
$tab = array_unique(explode(' ',$search)); // on pourra utiliser split pour avoir plusieur separateur voire utiliser preg_split pour avoir des mots de n caractères
$cond = array();
foreach ($tab as $key){
// if ($key != '' ) je doute de l'utilité mais si il est utile autant le faire dans la premiere boucle c'est autant de parcours du tableau suivant d'éviter ainsi que du même test
foreach ($title as $field){
$cond[] = $field.' LIKE "%'.$key.'%"'; // attention au metacaractere SQL ainsi qu'aux injections SQL
}
}
if ( count($cond) > 0 ){
return implode(' OR ',$cond); // evite de redécouper la chaine
}
return false ;
// j'ai supprimer le 1=1 car la requete est inutile si il y a pas de filtre
}

my 2 cents
Centauriel
Messages postés
18
Date d'inscription
vendredi 22 juin 2007
Statut
Membre
Dernière intervention
6 août 2009
-
Merci, j'ai fait quelques modifications.
Pour le 1=1, je suppose que quand on ne tape rien, on affiche tout le monde.
C'est plus un filtre qu'une recherche...
;)
astro53
Messages postés
48
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
5 août 2009
-
Salut Centauriel,

Si tu veut faire une recherche utilise match($motCles) against($condition). Pour plus de renseignement va voir le manuel PHP
http://www.manuelphp.com/mysql/fulltext-search.php
A bientot
Astro