S'il vous plait cela fait 2 jours que je suis sur le problème suivant :

J'ai deux requètes mysql qui séparément fonctionnent mais quand j'essaye de les associer la requète affiche avec un while des ligne de la BDD qui ne devrais pas apparaître car rejeté par la requète et si je fait une recherche un message d'erreur me dit que 'query is empty'.

Voici le code du moteur de recherche (trouvé sur ce site il me semble) post requete est le input du moteur de recherche
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
 
if (isset($_POST['requete'])){
		$mots = $_POST['requete'];
	}
mysql_select_db($database_jewelry3d, $jewelry3d);
 
   $motrecherche=explode(" ",$mots);
   $WHERE = "WHERE";
   $count = 0;
   reset ($motrecherche);
 
   while(list($key, $data) = each($motrecherche))
      {
      $count = $count + 1;
      if ($count == 1)   $WHERE .= "  titre LIKE '%" . $data . "%' OR date LIKE '%" . $data . "%'  OR comment LIKE '%" . $data . "%'  OR numero_facture LIKE '%" . $data . "%' "; 
      //else               $WHERE .= " AND titre LIKE '%" . $data . "%' "; 
      }
$query_compte_messagerie = sprintf("SELECT DISTINCT id, mail, login, titre, niveau, date, categorie, comment, afficher, numero_facture FROM `comment` $WHERE ORDER BY id DESC");
$compte_messagerie = mysql_query($query_compte_messagerie, $jewelry3d) or die(mysql_error());
$row_compte_messagerie = mysql_fetch_assoc($compte_messagerie);
$totalRows_compte_messagerie = mysql_num_rows($compte_messagerie);

code de la requète sans le moteur de recherche le but est de n'afficher que les lignes qui appartiennent au login de la session, qui sont affichés en '1' et qui sont de la catégorie 'Me to client' ou 'Demande'

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
$colname_compte_messagerie = "-1";
if (isset($_SESSION['MM_Username'])) {
  $colname_compte_messagerie = $_SESSION['MM_Username'];
}
mysql_select_db($database_jewelry3d, $jewelry3d);
$query_compte_messagerie = sprintf("SELECT DISTINCT id, mail, login, titre, niveau, date, categorie, comment, afficher, numero_facture FROM `comment` WHERE afficher = '1' AND login = '".$colname_compte_messagerie."' AND categorie = 'Me to client' OR categorie = 'Demande' ORDER BY id DESC");
$compte_messagerie = mysql_query($query_compte_messagerie, $jewelry3d) or die(mysql_error());
$row_compte_messagerie = mysql_fetch_assoc($compte_messagerie);
$totalRows_compte_messagerie = mysql_num_rows($compte_messagerie);
enfin voici le code qui associe les deux et qui ne fonctionne pas, j'ai essayé d'insérer les informations supplémentaire dans la requète soit dans la variable $WHERE soit après celle ci en la suivant d'un AND voici le bout de code qui pose problème :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
afficher = '1' AND login = '".$colname_compte_messagerie."' AND categorie = 'Me to client' OR categorie = 'Demande'
Première version :
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
24
25
 
 $colname_compte_messagerie = "-1";
if (isset($_SESSION['MM_Username'])) {
  $colname_compte_messagerie = $_SESSION['MM_Username'];
}
if (isset($_POST['requete'])){
		$mots = $_POST['requete'];
	}
mysql_select_db($database_jewelry3d, $jewelry3d);
 
   $motrecherche=explode(" ",$mots);
   $WHERE = "WHERE";
   $count = 0;
   reset ($motrecherche);
 
   while(list($key, $data) = each($motrecherche))
      {
      $count = $count + 1;
      if ($count == 1)   $WHERE .= "   afficher = '1' AND login = '".$colname_compte_messagerie."' AND categorie = 'Me to client' OR categorie = 'Demande' AND titre LIKE '%" . $data . "%' OR date LIKE '%" . $data . "%'  OR comment LIKE '%" . $data . "%'  OR numero_facture LIKE '%" . $data . "%' "; 
      //else               $WHERE .= " AND titre LIKE '%" . $data . "%' "; 
      }
$query_compte_messagerie = sprintf("SELECT DISTINCT id, mail, login, titre, niveau, date, categorie, comment, afficher, numero_facture FROM `comment` $WHERE ORDER BY id DESC");
$compte_messagerie = mysql_query($query_compte_messagerie, $jewelry3d) or die(mysql_error());
$row_compte_messagerie = mysql_fetch_assoc($compte_messagerie);
$totalRows_compte_messagerie = mysql_num_rows($compte_messagerie);
Deuxième version :
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
24
25
 
 $colname_compte_messagerie = "-1";
if (isset($_SESSION['MM_Username'])) {
  $colname_compte_messagerie = $_SESSION['MM_Username'];
}
if (isset($_POST['requete'])){
		$mots = $_POST['requete'];
	}
mysql_select_db($database_jewelry3d, $jewelry3d);
 
   $motrecherche=explode(" ",$mots);
   $WHERE = "WHERE";
   $count = 0;
   reset ($motrecherche);
 
   while(list($key, $data) = each($motrecherche))
      {
      $count = $count + 1;
      if ($count == 1)   $WHERE .= "    titre LIKE '%" . $data . "%' OR date LIKE '%" . $data . "%'  OR comment LIKE '%" . $data . "%'  OR numero_facture LIKE '%" . $data . "%' "; 
      //else               $WHERE .= " AND titre LIKE '%" . $data . "%' "; 
      }
$query_compte_messagerie = sprintf("SELECT DISTINCT id, mail, login, titre, niveau, date, categorie, comment, afficher, numero_facture FROM `comment` $WHERE AND afficher = '1' AND login = '".$colname_compte_messagerie."' AND categorie = 'Me to client' OR categorie = 'Demande' ORDER BY id DESC");
$compte_messagerie = mysql_query($query_compte_messagerie, $jewelry3d) or die(mysql_error());
$row_compte_messagerie = mysql_fetch_assoc($compte_messagerie);
$totalRows_compte_messagerie = mysql_num_rows($compte_messagerie);