Le but étant de filtrer selon des options, parking, terasse et wifi
En bdd les valeurs son stocké en INT soit 1 si il y a l'option soit 0 si pas cette option.
Coté code j'ai fait des conditons avec pluiseurs else if mais je trouve ca un peu indigeste. ( je suis pour améliorer la chose, peut importe si on recharge la page ou pas)
$sql = $bdd->prepare("SELECT * FROM actu WHERE ville = :ville AND categorie = :categorie");
$sql->bindParam(':ville', $_GET['ville'], PDO::PARAM_INT);
$sql->bindParam(':categorie', $_GET['categorie'], PDO::PARAM_INT);
$sql->execute();}
// Terasse
if (isset($_POST["terasse"])){
$sql = $bdd->prepare("SELECT * FROM actu WHERE ville = :ville AND categorie = :categorie AND terasse = 1");
$sql->bindParam(':ville', $_GET['ville'], PDO::PARAM_INT);
$sql->bindParam(':categorie', $_GET['categorie'], PDO::PARAM_INT);
$sql->execute();
}
// Parking
else if (isset($_POST["wifi"])){
$sql = $bdd->prepare("SELECT * FROM actu WHERE ville = :ville AND categorie = :categorie AND wifi = 1");
$sql->bindParam(':ville', $_GET['ville'], PDO::PARAM_INT);
$sql->bindParam(':categorie', $_GET['categorie'], PDO::PARAM_INT);
$sql->execute();
}
// Wifi
else if (isset($_POST["parking"])){
$sql = $bdd->prepare("SELECT * FROM actu WHERE ville = :ville AND categorie = :categorie AND parking = 1");
$sql->bindParam(':ville', $_GET['ville'], PDO::PARAM_INT);
$sql->bindParam(':categorie', $_GET['categorie'], PDO::PARAM_INT);
$sql->execute();
}
else if (isset($_POST["terasse"]) && isset($_POST["parking"]) && isset($_POST["wifi"])){
$sql = $bdd->prepare("SELECT * FROM actu WHERE ville = :ville AND categorie = :categorie AND parking = 1 AND wifi = 1 AND terasse = 1");
$sql->bindParam(':ville', $_GET['ville'], PDO::PARAM_INT);
$sql->bindParam(':categorie', $_GET['categorie'], PDO::PARAM_INT);
$sql->execute();
}
Coté Filtre<ul>
<form id="form" method="post" action="">
<input type="checkbox" name="terasse" class="checkbox" <?=(isset($_POST['terasse'])?' checked':'')?>/> Terasse<br>
<input type="checkbox" name="wifi" class="checkbox" <?=(isset($_POST['wifi'])?' checked':'')?>/> Wifi<br>
<input type="checkbox" name="parking" class="checkbox" <?=(isset($_POST['parking'])?' checked':'')?>/> Parking<br>
</form>
<script type="text/javascript">
$(function(){
$('.checkbox').on('change',function(){
$('#form').submit();
});
});
</script>
</ul>