Bonjour à tous,
je relance ma demande, car sur la précédente, j'ai présenté du code légèrement indigeste..
Je souhaite donc réaliser un moteur de recherche pour mon site.
La "form" est composée de :
un input text "recherche"
un select "mode" pour afficher, soit un mot, tous les mots, ou l'expression de la recherche.
un select "categorie"
et un select "pays"

Je souhaite afficher tous les pays ou toutes les categories, si ceux-ci ne sont pas specifiés. Car quant la sélection reste sur le selected (par ex : tout les pays), et bien la recherche ne me donne "aucun resultat" Quelqu'un peux t-il m'aider, parce-que là je m'embourbe..

Merci de votre aide
Cordialement,
K@rpe

Partie du code concernant la requête :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
if (isset($_POST['rechercher'])) //si on a validé le formulaire
{
$recherche = mysql_real_escape_string(htmlspecialchars($_POST['recherche'])); //sécurisation des variables
$m = mysql_real_escape_string(htmlspecialchars($_POST['motcat']));
$p = mysql_real_escape_string(htmlspecialchars($_POST['pays']));
$mode = mysql_real_escape_string(htmlspecialchars($_POST['mode']));
$valid='oui';
 
if (empty($_POST['motcat'])) //si on a rempli le champs 
{$motcat = "AND  souscategorie1='$m'";}// AND souscategorie1='$motcat' OR pays='$pays'
	else //si on ne l'a pas cochée
	{$motcat = "";}// AND valid='oui'	
 
if (empty($_POST['pays'])) //si on a rempli le champs 
{$pays = "AND pays='$p'";}// AND souscategorie1='$motcat' OR pays='$pays'
	else //si on ne l'a pas cochée
	{$pays = "";}// AND valid='oui'
 
if ($mode == "tous_les_mots")
{$and_ou_or = 'AND';} //on utilisera AND dans la boucle
	else
	{	$and_ou_or = 'OR';} //on utilisera OR dans la boucle
 
if ($mode == "expression_exacte") //si le mode de recherche est par expression exacte
{
$selection_recherche = mysql_query("SELECT * FROM annonces WHERE  titre LIKE '$recherche%' AND souscategorie1='$motcat' AND pays='$pays' AND valid='oui' ORDER BY idannonce DESC LIMIT $limite,$nombre");//
}
	else //si le mode de recherche n'est pas par expression exacte
	{
	$mots = explode(" ", $recherche); //séparation des mots
	$nombre_mots = count ($mots); //compte le nombre de mots
	$valeur_requete = '';
		for($nombre_mots_boucle = 0; $nombre_mots_boucle < $nombre_mots; $nombre_mots_boucle++) //tant que le nombre de mots de la recherche est supérieur à celui de la boucle, on continue en augmentant le nombre de mots de 1 à chaque fois
		{
		$valeur_requete .= '' . $and_ou_or . ' titre LIKE \'%' . $mots[$nombre_mots_boucle] . '%\''; //modification de la variable $valeur_requete
		}
		$valeur_requete = ltrim($valeur_requete,$and_ou_or); //suppression de AND ou de OR au début de la boucle
		$selection_recherche = mysql_query("SELECT *FROM annonces WHERE $valeur_requete $pays AND valid='oui' ORDER BY idannonce DESC"); //requête avec le résultat de la boucle dedans
		}
		$nombre_resultats = mysql_num_rows($selection_recherche); //compte le nombre d'entrées sélectionnées par la recherche
 
if ($nombre_resultats == 0) //s'il n'y a pas de résultat
{
echo '<span class="font_blanc" align="center">...aucun resultat pour votre recherche.</span>';
}
else //il y a au moins un résultat
{
echo '<div align="center" class="font_blanc">Il y a ' . $nombre_resultats . 'annonce(s) correspondant à votre recherche !</div><br /><br />'; //nombre de résultats
    while($resultats = mysql_fetch_array($selection_recherche)) 
{
echo
Mon formulaire 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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  <form action="recherche2.php#anc" method="post">
 
            <input name="recherche" type="text" id="recherche" value="<?php echo $_POST['recherche']; ?>" size="65" />
 
            <input name="rechercher" type="submit" value="rechercher"/>
 
<a href="javascript:visibilite('critere');" class="liens_interne">Options</a>
 
 
       <input type="hidden" name="sujets_fermes"checked="checked" />
 
       >
         <br />
 
         Trouver :
 
 <select name="mode" class="contenus2">
             <option value="tous_les_mots">Tous les mots</option>
             <option value="un_mot">Au moins un mot</option>
             <option value="expression_exacte">Expression</option>
</select>
 
 Cat&eacute;gorie :
 
 <select name="motcat" class="contenus2" id="search_category" onchange="SearchCrit(false, get_radio_value(f.st));">
              <option selected="selected">Toutes categories</option>
              <option value="Voitures">Voitures</option>
              <option value="Motos">Motos</option>
              <option value="Utilitaires">Utilitaires</option>
              <option value="Equipement Auto">Equipement Auto</option>
              <option value="Equipement Moto">Equipement Moto</option>
              <option value="Bateaux">Bateaux</option>
 
            </select>
 
            <select name="pays"  id="search_pays" class="contenus2">
              <option selected="selected">Tous les pays</option>
              <option value="Alg&eacute;rie">Alg&eacute;rie</option>
              <option value="France">France</option>
              <option value="Maroc">Maroc</option>
              <option value="Tunisie">Tunisie</option>
            </select>