bonjour à vous,
j essai de mettre en place une barre de recherche mais j ai quelque difficulté pour la conception

j ai reussi a la faire fonctionné mais seulement si y a un seul mot en faisant ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
if (isset($_POST['action'])) 
       $_SESSION['critere'] = $_POST;
if(isset($_SESSION['critere'])) 
        extract($_SESSION['critere']);// extraction des critères de recherche
$choix = array();          
        if(isset($Keyword) && !empty($Keyword))
 
 {$choix[] = "Marque LIKE '%$Keyword%'";}                   
 {$choix[] = "Modele LIKE '%$Keyword%'";}
 {$choix[] = "Gamme LIKE '%$Keyword%'";}
 
$critere = implode(' OR ', $choix);
 
$requete = "select * ,(Marque) AS Marque from batterie WHERE $critere ORDER BY Marque ASC";
$reponse = mysql_query( $requete ) ;
ensuite en parcourant le net j ai trouvé une chose qui marche sur plusieur mots mais je n arrive pas a mettre en place car la ca fonctionne que sur un seul champ de ma table (exemple seulement la Marque) en faisant ceci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
if (isset($_POST['action'])) 
       $_SESSION['critere'] = $_POST;
if(isset($_SESSION['critere'])) 
        extract($_SESSION['critere']);// extraction des critères de recherche
$choix = array();          
        if(isset($Keyword) && !empty($Keyword))
{$choix[] = "Marque";} // j ai supprimé les autres champs car sinon ma requete donne une erreur sql
$critere = implode(' ', $choix);
$mots = explode( " ", $Keyword );
if( count( $mots ) > 0 )
 
$requete = "select * ,('Marque') AS Marque from batterie WHERE";
   for( $i = 0; $i < count( $mots ); $i++ ) {
      //$requete .= "$critere   ";
      $requete .= "  $critere LIKE '%". $mots[$i] ."%' ";
      if( $i < count( $mots ) - 1 )
         $requete .= " OR ";}
 
   $requete .= " ORDER BY Marque"; 
 
 
   $reponse = mysql_query( $requete ) ;
je ne sais pas comment combiner les 2 vu que je souhaite une recherche sur la table qui se presente sous cette forme
ID
Marque
Modele
Gamme
etc.. j ai 35 colonnes dont je souhaite rechercher

j ai essayé avec un fulltext
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 select * from batterie WHERE MATCH(Marque,Modele,Gamme) AGAINST('exide') ORDER BY Marque
mais j ai eu cette erreur #1191 - Can't find FULLTEXT index matching the column list
cela a fonctionné a moitié quand j ai reussi a mettre mes champs Marque,Modele,Gamme en fulltext direct dans ma table car ensuite j ai fais cela
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
$requete = "select * ,('Marque') AS Marque from batterie WHERE ";
   for( $i = 0; $i < count( $mots ); $i++ ) {
      //$requete .= "$critere   ";
      $requete .= "  MATCH($critere) AGAINST('$mots[$i]') ";
      if( $i < count( $mots ) - 1 )
         $requete .= " OR ";}
 
   $requete .= " ORDER BY Marque";
du coup il recherche pas non plus le 2 eme mots

j ai essayé une chose aussi comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
$requete = "select * ,('Marque') AS Marque from batterie WHERE ID IN($critere)";
 
          for( $i = 0; $i < count( $mots ); $i++ ) {
              //$requete .= "$critere";
              $requete .= " LIKE '%". $mots[$i] ."%' ";
           if( $i < count( $mots ) - 1 )
            $requete .= " OR ";
            }
 
          $requete .= " ORDER BY Marque";
mais erreur sql et en parcourant le net j ai cru comprendre que l on peut pas mettre un IN avec un LIKE

voila , je ne sais pas comment procéder et pardonnez moi pour mes lacunes .
je vous remercie d avance pour l aide apporté