moteur de recherche multicritére ?

moteur de recherche multicritére ? - PHP - Programmation

Marsh Posté le 14-08-2003 à 08:53:01    

bonjour,  
voila j'ai  un moteur de recherche qui interroge ma base de donnée mysql et affiche les resultats cela marche parfaitment mais uniquement avec un seul critère de recherche et j'essaye sans succes de pouvoir en faire un moteur multicritère mais bon voila ....
 
voici la partie du script qui contient la requete sql  
 
$requete_sql_a= "SELECT * FROM test";
if (isset($ts) and $ts!="" )
  {
  if (isset($requete_sql)){$requete_sql_a = $requete_sql_a." AND ";}
      //génération de la requête sql
      $ts = trim($ts);
      $mots_clefs = explode(" ", $ts);
           foreach($mots_clefs as $loop)
            {
            $requete_sql= $requete_sql."(auteurs LIKE '%$loop%' OR nom LIKE '%$loop%' OR nom LIKE '%$loop%' OR catalog LIKE '%$loop%' OR age_d_application LIKE '%$loop%') AND ";
            $requete_affichage = $requete_affichage."<b>$loop</b> & ";
            }
      $len = strlen($requete_sql);
      $requete_sql = substr($requete_sql, 0,$len-5);
      $requete_sql_a =$requete_sql_a." WHERE (".$requete_sql." )";
 
je pense qu'il faut modifier le script ici mais je me mêle les pinceaux la....
 
qui peut m'indiquer le chemin à suivre ?
 
ps: si vous voulez le script complet du moteur envoyer moi un message perso :)  

Reply

Marsh Posté le 14-08-2003 à 08:53:01   

Reply

Marsh Posté le 14-08-2003 à 09:58:36    

A vue de nez ta chaine de sortie ($requete_sql_a) elle ressemble à ça:
 
SELECT * FROM test AND WHERE...
 
J'ai l'impression.


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 14-08-2003 à 10:04:02    

pour alléger ton code
 
plutôt que $requete = $requete.$variable tu peux faire
 
$requete .= $variable;
 
EDIT : pas étonnant que ça marche pas ton truc, le but du jeu c'est de sortir une requete SQL correcte et là c'est bourré d'erreur de syntaxe
 
RE EDIT : un exemple qui devrait sortir une vrai requete, par contre niveau perfs tu vas pleurer avec plusieurs mots
 

Code :
  1. <?
  2. if (isset($ts) && $ts!= '') {
  3.   $ts = trim($ts);
  4.   $ts = explode(' ', $ts);
  5.   foreach ($ts as $Key => $Val) {
  6.     $WHERE .= " AND (auteurs LIKE '%$Val%' OR nom LIKE '%$Val%' OR nom LIKE '%$Val%' OR catalog LIKE '%$Val%' OR age_d_application LIKE '%$Val%')";
  7.   }
  8.   $Req = 'SELECT * FROM test WHERE 1 '.$WHERE;
  9. }
  10. echo $Req;
  11. ?>


Message édité par Sh@rdar le 14-08-2003 à 10:12:11

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 21-08-2003 à 20:18:07    

[citation=486853,1][nom]Sh@rdar a écrit[/nom]pour alléger ton code
 
plutôt que $requete = $requete.$variable tu peux faire
 
$requete .= $variable;
 
EDIT : pas étonnant que ça marche pas ton truc, le but du jeu c'est de sortir une requete SQL correcte et là c'est bourré d'erreur de syntaxe
 
RE EDIT : un exemple qui devrait sortir une vrai requete, par contre niveau perfs tu vas pleurer avec plusieurs mots
 
[code]
<?
if (isset($ts) && $ts!= '') {
  $ts = trim($ts);
  $ts = explode(' ', $ts);
  foreach ($ts as $Key => $Val) {
    $WHERE .= " AND (auteurs LIKE '%$Val%' OR nom LIKE '%$Val%' OR nom LIKE '%$Val%' OR catalog LIKE '%$Val%' OR age_d_application LIKE '%$Val%')";
  }
 
  $Req = 'SELECT * FROM test WHERE 1 '.$WHERE;
}
 
echo $Req;
?>
ben ca fonctione bien poutant ce que j'aimerais pouvoir faire c'est une recherche avec plusieurs critère..

Reply

Sujets relatifs:

Leave a Replay

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