ajax checkbox filter
Posted
by
user1018298
on Stack Overflow
See other posts from Stack Overflow
or by user1018298
Published on 2011-11-15T09:27:17Z
Indexed on
2011/11/15
9:50 UTC
Read the original article
Hit count: 215
I need some help with a checkbox filter I am working in. I have four groups of checkboxes (type, vehicle, availability, price) and I would like to filter the content on the page based on the user's input. I can get the filter working OK but I am having issues with the groups. I can only seem to match one checkbox from each group rather than all checkboxes from each group.
For example, a visitor can select 1 option in group 1, all options in group 2, 1 option in group three and 1 option in group 4.
I am using ajax to build an SLQ query to return the correct filtered results from my database.
here is my code:
$('div.filters').delegate('input:checkbox', 'change', function() {
var type = $('input.exp_type:checked').map(function ()
{
return $(this).attr('value');
}).get().join(',');
var vehicle = $('input.vehicle_type:checked').map(function ()
{
return $(this).attr('value');
}).get().join(',');
var avail = $('input.availability:checked').map(function ()
{
return $(this).attr('value');
}).get().join(',');
var price = $('input.price:checked').map(function ()
{
return $(this).attr('value');
}).get().join(',');
//alert($options);
$.ajax({
type:"POST",
url:"filtervouchers.php",
data:"type="+type+"&vehicle="+vehicle+"&avail="+avail+"&price="+price,
success:function(data){
$('.results').html(data);
}
});//end ajax
})
and the php code:
$type = mysql_real_escape_string($_POST['type']);
$vehicles = mysql_real_escape_string($_POST['vehicle']);
$avail = mysql_real_escape_string($_POST['avail']);
$price = mysql_real_escape_string($_POST['price']);
if ($type != '')
{
$sql2 = " AND exp_type IN ($type)";
}
if ($vehicles != '')
{
$sql3 = " AND vehicle_type LIKE '%$vehicles%'";
}
if ($avail != '')
{
$sql4 = " AND availability LIKE '%,' $avail% ','";
}
if ($price != '')
{
$sql5 = " AND price_band IN ($price)";
}
Can this be done using jquery?
© Stack Overflow or respective owner