Bonjour,
Ce que je peux te conseiller, c'est de sortir l'écriture de la requête de son exploitation, puis de la construire au gré des réponses obtenues.
Première étape: on sort la définition de la requête:
$requete = "SELECT * FROM produits where categorie=$categorie AND prix=$prix AND marque=$marque ville=$ville ";
$reponse = $bdd->query($requete);
Tant qu'à faire, pourquoi ne pas sortir les variables de la phrase:
$requete = "SELECT * FROM produits where categorie=".$categorie." AND prix=".$prix." AND marque=".$marque." AND ville=".$ville." ";
$reponse = $bdd->query($requete);
Cela étant fait, construisons la requête en fonction de ce que les usagers ont répondu:
$compte = 0; //un marqueur, question de savoir si nous aurons à inclure "AND" ou non entre les analyses
$requete = "SELECT * FROM produits WHERE ";
if (trim($categorie) != '') {
$requete .= "categorie=".$categorie." ";
$compte = $compte + 1;
}
if (trim($prix) != '' ) {
if ($compte > 0) { $requete .= " AND "; }
$requete .= " prix=".$prix." ";
$compte = $compte + 1;
}
//Tu peux faire la même chose avec $marque et $ville, je t'en laisse le loisir.
$requete .= " AND marque=".$marque." AND ville=".$ville." ";
$reponse = $bdd->query($requete);
Je sais, on me le dira certainement, j'aurais pu proposer l'usager de $compte++ à la place de $compte = ...
On peut faire plus simple avec des variables venant d'un tableau, mais bon.
Bonne chance.