Hoi!
Sinds een tijdje ben ik met een webshop bezig en ik ben aan de product filtering toegekomen. Heb een 5 tal filters vanuit een form die ik dan post naar een array. Wat mijn bedoeling is, is dat de SQL op zichzelf ontstaat door de elementen uit de array. Tot nu toe heb ik:
<?php
function product_filter()
{
require_once("dbcontroller.php");
$db_handle = new DBController();
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$filter = array();
$sort_products = $_POST['Sorteren'];
$price_min = $_POST['MinP'];
$price_max = $_POST['MaxP'];
$length_min = $_POST['MinL'];
$length_max = $_POST['MaxL'];
$height_min = $_POST['MinH'];
$height_max = $_POST['MaxH'];
$weight_min = $_POST['MinW'];
$weight_max = $_POST['MaxW'];
if(isset($_POST['Kleur']))
{
$has_color = $_POST['Kleur'];
$filter[] = "Kleur contains '".$has_color."'";
}
if (isset($_GET['categorie'])) {
$filter[] = "Categorie = '".$_GET['categorie']."' ";
}
if(!empty($price_min_max)) {
$filter[] = "prijs_nieuw between'".$price_min."' and '".$price_max."'";
}
if(!empty($length_min_max)) {
$filter[] = "lengte between '".$length_min."' and '".$length_max."'";
}
if(!empty($height_min_max)) {
$filter[] = "hoogte between '".$height_min."' and '".$height_max."'";
}
if(!empty($weight_min_max)) {
$filter[] = "gewicht between '".$weight_min."' and '".$weight_max."'";
}
if(!empty($contains_color)) {
$filter[] = "kleur contains '".$kleuren."'";
}
if(!empty($sort_products)) {
if ($_POST['Sorteren'] == "Naam oplopend ")
{
$filter[] = "ORDER BY naam ASC";
}
if ($_POST['Sorteren'] == "Naam aflopend ")
{
$filter[] = "ORDER BY naam DESC";
}
if ($_POST['Sorteren'] == "Prijs oplopend ")
{
$filter[] = "ORDER BY prijs_nieuw ASC ";
}
if ($_POST['Sorteren'] == "Prijs aflopend ")
{
$filter[] = "ORDER BY prijs_nieuw DESC ";
}
}
echo "<pre>".print_r($filter,true)."</pre>";
echo "<vr/>";
if (count($filter) > 0) {
$product_array = $db_handle->runQuery('SELECT * FROM producten WHERE IN ("'.implode("AND",$filter).'"');
}
?>
Het probleem is, is dat de array zich niet vult met de filters die aangepast/ingesteld zijn. De array heeft vervolgens 0 items.Wat dien ik aan te passen waardoor de aangepaste filters oom in de array komen en zorgen voor een passend filter?
Dank alvast!
Edit: als ik losse dingen in de array wil zetten om te testen, bijvoorbeeld;
$filter[] = "Test";
$filter[] = "Voor";
$filter[] = "Deze";
$filter[] = "Array";
dan vult de array zich wel!
2.701 views