Je suis en train de faire un système de recherche pour mon site.
J'ai fait une case ou l'on peu sélectionner si l'on veut que les mots clés tapés se trouve uniquement dans le titre du document ou dans le titre ou la description, ou n'importe ou dans le document.
Voici la boucle que j'ai pris sur le net pour séparer les mots et faire ma requette:
foreach($mots as $mots_boucle) //tant que le nombre de mots de la recherche est supérieur à celui de la boucle, on continue en incrémentant à chaque fois la variable $nombre_mots_boucle
{
$valeur_requete .= $and_ou_or.' '.$champ.' LIKE \'%' . $mots_boucle . '%\''; //modification de la variable $valeur_requete
}
$valeur_requete = ltrim($valeur_requete,$and_ou_or); //suppression de AND ou or au début de la boucle
Ici la requete donne : monchamp LIKE mot OR (AND) monchamp LIKE mot2, etc...J'aimerais que si l'on clique sur chercher dans titre et description. La requete soit : monchamp LIKE mot AND(OR) monchamp LIKE mot2 OR monchamp2 LIKE mot AND(OR) monchamp2 LIKE mot2, etc..
Je ne suis déjà pas certain que c'est comme ça qu'il faut procéder pour chercher les mots taper dans plusieurs champs.
Voici comment j'ai procédé:
D'abord, je change monchamp en fonction du lieu de recherche.
// Ajouté les autres lieux ou chercher
if ($champ == "titre")
{
$monchamp = array('work_name');
}
elseif ($champ == "titredesc")
{
$monchamp = array('work_name', 'work_desc');
}
else
{
$monchamp = array('work_name', 'work_desc', 'dom_name','doc_format','doc_name','work_dateR','work_degre','work_type','work_autors');
}
Ensuite je ne sais pas trop comment faire pour obtenir le resultat que je désire..J'ai essayé de faire une boucle dans la boucle:
$valeur_requete = '';
foreach ($monchamp as $champ)
{
foreach($mots as $mots_boucle) //tant que le nombre de mots de la recherche est supérieur à celui de la boucle, on continue en incrémentant à chaque fois la variable $nombre_mots_boucle
{
$valeur_requete .= $and_ou_or.' '.$champ.' LIKE \'%' . $mots_boucle . '%\''; //modification de la variable $valeur_requete
}
$valeur_requete = ltrim($valeur_requete,$and_ou_or); //suppression de AND ou or au début de la boucle
}
Mais ça ne m'affiche pas le OR que je veut mais toujours la variable $and_ou_or .J'espère que mon problème et bien posé et que vous allez pouvoir m'aider
Merci d'avance !