bonjour à tous. j'ai fais un formulaire de recherche multicritères dans une base de donnée. mais le problème c'est que le code ne prend en compte que le premier champs pour faire la recherche. je m'explique lorsque le premier champs du formulaire est renseigné et que les autres sont laissé vide, le code me renvoi les résultats de la recherche. mais si j'ajoute à la recherche un autre champs, rien ne s'affiche. il en va de même si au lieu de remplir le premier champs du formulaire je remplis le deuxième ou le troisième.
je joint le formulaire et le code php en espèrant trouver de l'aide comme d'habitude sur ce site. merci d'avance

formulaire
Code html : 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
<form method="post" action="recherche.php">
    <p>Type d'opération : <br />
        <select name="type_ope" value="Choisissez">
            <option value="" selected="selected"></option>
            <option>vente</option>
            <option>location</option>
        </select><br />
        type de bien : <br />
        <select name="type_bien">
            <option value="" selected="selected"></option>
            <option value="1">Villa</option>
      <option value="2">appartement</option>
      <option value="3">terrain</option>
      <option value="4">chambre</option>
      <option value="5">magasin</option>
      <option value="6">immeuble</option>
      <option value="7">studio</option>
      <option value="8">bureaux</option>
      <option value="9">entrepot</option>
        </select><br />
        prix : <br />
        <select name="prix">
            <option value="" selected="selected"></option>
            <option value="1"> Moins de 200 000</option>
      <option value="2"> Entre 200 000 et 300 000</option>
      <option value="3"> Entre 300 000 et 400 000</option>
      <option value="4"> Entre 400 000 et 600 000</option>
      <option value="5"> Entre 600 000 et 800 000</option>
      <option value="6"> Entre 800 000 et 1 000 000</option>
      <option value="7"> Entre 1 000 000 et 1 500 000</option>
      <option value="8"> Entre 1 500 000 et 2 000 000</option>
      <option value="9"> Plus de 2 000 000</option>
        </select><br />
        <input type="submit" value="Valider" /><br />

traitement
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// connexion
$cnx = mysql_connect($host,$user,$pass) or die("Impossible de se connecter");
$db = mysql_select_db("$bdd") or die("Impossible de se connecter");
if (mysql_connect ($host,$user,$pass))
{
    echo 'Connexion réussie'; echo '<br>';
}
else
{
    echo 'Connexion impossible...'.mysql_error(); echo '<br>';
}
// on récupère les critères sélectionnés
extract($_POST);
$i = 0;
// si la variable est présente, on lui affecte une place dans le tableau 'choix[]', qui nous servira ensuite à construire le WHERE de la requête.
if(!empty($type_ope))
{
    $choix[] = "type_ope = '$type_ope'";
    $i++;
}
if(!empty($type_bien))
{
    $choix[] = "type_bien = '$type_bien'";
    $i++;
}
if(!empty($prix))
{
   $choix[] = "prix = '$prix'";
   $i++;
}
// on insère les éléments remplis dans une variable $critere, en commençant par la première occurrence, puis on boucle
$critere = implode(" and ", $choix);
// enfin on fait la requête si $i >0, ça veut dire qu'il y a des critères
if($i > 0)
{
    // requete de selection
    $sql = "SELECT * FROM annonce WHERE $critere ";
    $requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
}
// si $i = 0, alors l'utilisateur n'a pas saisi de critère, là soit on fait la même requete mais sans "WHERE $critere", soit on lui demande de saisir au moins un critère.
else
{
    $sql = "SELECT * FROM annonce WHERE $critere ";
}
//récupération avec mysql_fetch_array(), et affichage de nos résultats :
echo( "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" align=\"center\">\n" );
echo( "<tr>
    <td><div align=\"center\">Nom du fichier</div></td>
    <td><div align=\"center\">Type de materiel</div></td>
    <td><div align=\"center\">Systeme/OS</div></td>
    <td><div align=\"center\">Lieu</div></td>
    <td><div align=\"center\">Operationnel/Secours</div></td>
</tr>" );
while( $result = mysql_fetch_array( $requete ) )
{
    echo( "<tr>\n" );
    echo( "<td><div align=\"center\">".$result["type_ope"]."</div></td>\n" );
    echo( "<td><div align=\"center\">".$result["type_bien"]."</div></td>\n" );
    echo( "<td><div align=\"center\">".$result["ville"]."</div></td>\n" );
    echo( "<td><div align=\"center\">".$result["quartier"]."</div></td>\n" );
    echo( "<td><div align=\"center\">".$result["prix"]."</div></td>\n" );
    /*echo( "<td><div align=\"center\"><form method='post' action='telechargement.php'><input type='submit' value='Telechargement'/></form></div></td>\n" );*/
    echo( "</tr>\n" );
}
echo( "</table><br>\n" );
j'ai oublié de préciser que si je renseigne aucun champs j'ai des erreurs

Undefined variable: choix

implode() [function.implode]: Invalid arguments passed

Undefined variable: requete in

mysql_fetch_array() expects parameter 1 to be resource, null given in