Bonjour,
Dans ma table "fiches" je liste des ressources. Chaque ressource se décompose en différentes colonnes (id, niveau, description, ...).
A partir de mots-clés récupérés dans une chaîne de get je souhaiterais récupérer les ressources contenant TOUS les mots indiqués. Par exemple, si les mots-clés sont "bibeleskas amer flamkuche", je souhaiterais obtenir les ressources contenant ces 3 mots qu'ils se trouvent dans le titre, la description, l'url,...
$kwords est le tableau contenant les mots-clés.
Voici ce que j'ai fait pour définir ma requête :
Il semblerait que la condition soit mal définie (on obtient les ressources contenant au moins un des mots et non les 3). Je pense que le AND que j'ajoute entre chaque recherche de mot n'est pas suffisant, il faudrait pouvoir mettre des parenthèses ce qui n'est probablement pas possible...
Merci d'avance
Modifié par jojaba (19 Jun 2013 - 13:49)
Dans ma table "fiches" je liste des ressources. Chaque ressource se décompose en différentes colonnes (id, niveau, description, ...).
A partir de mots-clés récupérés dans une chaîne de get je souhaiterais récupérer les ressources contenant TOUS les mots indiqués. Par exemple, si les mots-clés sont "bibeleskas amer flamkuche", je souhaiterais obtenir les ressources contenant ces 3 mots qu'ils se trouvent dans le titre, la description, l'url,...
$kwords est le tableau contenant les mots-clés.
Voici ce que j'ai fait pour définir ma requête :
// Constitution de la requête pour tous les mots-clés
// **************************************************
$i = 0;
foreach ($kwords as $kword) {
if ($i == 0) {
$cond_all_kw .= 'titre LIKE \'%'.$kword.'%\' OR url LIKE \'%'.$kword.'%\' OR description LIKE \'%'.$kword.'%\' OR niveau LIKE \'%'.$kword.'%\' OR domaine LIKE \'%'.$kword.'%\' OR sous_domaine LIKE \'%'.$kword.'%\'';
} else {
$cond_all_kw .= ' AND titre LIKE \'%'.$kword.'%\' OR url LIKE \'%'.$kword.'%\' OR description LIKE \'%'.$kword.'%\' OR niveau LIKE \'%'.$kword.'%\' OR domaine LIKE \'%'.$kword.'%\' OR sous_domaine LIKE \'%'.$kword.'%\'';
}
$i++;
}
$req_all_kw = 'SELECT * FROM fiches WHERE '.$cond_all_kw.' AND statut=1';
Il semblerait que la condition soit mal définie (on obtient les ressources contenant au moins un des mots et non les 3). Je pense que le AND que j'ajoute entre chaque recherche de mot n'est pas suffisant, il faudrait pouvoir mettre des parenthèses ce qui n'est probablement pas possible...
Merci d'avance

Modifié par jojaba (19 Jun 2013 - 13:49)