par
yoann38 » 24 juil. 2019, 10:13
Salut à tous, bon j'ai fait truc en PHP pour permettre de filter des résultats avec des checkboxes.
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>
Salut à tous, bon j'ai fait truc en PHP pour permettre de filter des résultats avec des checkboxes.
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)
[PHP]
$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();
}
[/PHP]
Coté Filtre
[html]
<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>
[/html]