I am learning how to code and I am making my own portfolio right now. I created an eCommerce page with template (created by FreeHTML5.co) and I want to use ajax to filter products.
When I clicked the TYPE filter checkboxes, some items linked to the filter show up but some don't:
My database
Cabinet - Missing - ALATO CABINET
Table - Missing - SCULPTURAL COFFEE TABLE
Box - Missing - HIMITSU MONEY BOX
This is my ajax code (index.php):
filter_data();
function filter_data()
{
$('.filter_result').html('<div id="loading" style="" ></div>');
var action = 'product_filter';
var minimum_price = $('#hidden_minimum_price').val();
var maximum_price = $('#hidden_maximum_price').val();
var brand = get_filter('brand');
$.ajax({
url:"product_filter.php",
method:"POST",
dataType:'text',
data:{action:action, minimum_price:minimum_price, maximum_price:maximum_price, brand:brand},
success:function(data){
$('.filter_result').html(data);
}
});
}
function get_filter(class_name)
{
var filter = [];
$('.'+class_name+':checked').each(function(){
filter.push($(this).val());
});
return filter;
}
$('.common_selector').click(function(){
filter_data();
});
$('#price_range').slider({
range:true,
min:0,
max:1000,
values:[0, 1000],
step:50,
stop:function(event, ui)
{
$('#price_show').html(ui.values[0] + ' - ' + ui.values[1]);
$('#hidden_minimum_price').val(ui.values[0]);
$('#hidden_maximum_price').val(ui.values[1]);
filter_data();
}
});
This is my backend codes (product_filter.php):
<?php
require "./includes/dbh-inc.php";
if(isset($_POST["action"]))
{
$query = "SELECT * FROM products WHERE productDisplay=1";
if(isset($_POST["minimum_price"], $_POST["maximum_price"]) && !empty($_POST["minimum_price"]) && !empty($_POST["maximum_price"]))
{
$query .= "
AND productPrice BETWEEN '".$_POST["minimum_price"]."' AND '".$_POST["maximum_price"]."'
";
}
if(isset($_POST["brand"]))
{
$brand_filter = implode("','", $_POST["brand"]); // 'implode' - convert items in array to string
$query .= "
AND productType IN('".$brand_filter."')
";
}
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt , $query)){
header("location: index.php");
exit();
}
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_assoc($result);
$output = '';
if($row)
{
while($row = mysqli_fetch_assoc($result)):
$output .= '
<div class="col-md-4 text-center">
<div class="product">
<div class="product-grid" style="background-image:url(images/'.$row['productImage'].'.jpg);">
<div class="inner">
<p>
<a href="product.php?id='.$row['productId'].'" class="icon"><i class="icon-shopping-cart"></i></a>
<a href="product.php?id='.$row['productId'].'" class="icon"><i class="icon-eye"></i></a>
</p>
</div>
</div>
<div class="desc">
<h3><a href="product.php?id='.$row['productId'].'">'.$row['productName'].'</a></h3>
<span class="price">$'.$row['productPrice'].'</span>
</div>
</div>
</div>
';
endwhile;
}
else
{
$output = '<h3>No Data Found</h3>';
}
echo $output;
}
?>
Thank you in advance for reading my code and I wish you have a wonderful day!