Link to home
Start Free TrialLog in
Avatar of Milind Bhuvad
Milind BhuvadFlag for India

asked on

How to filter product price range using checkbox?

I created product price filter using checkbox in php. I have 3 price range 2000-3000, 3000-4000, 4000-5000. If user click one checkbox its work, but user click more than one checkbox getting error (Notice: Trying to get property of non-object in D:\xamp\htdocs\aasopalav\controller\filter_saree.php on line 45).

here is my forntend code
<ul class="list-style-6 margin-50px-bottom text-small">
      <li><input type="checkbox" value="2000 AND 3000" class="item_filter price">2000 - 3000</li>
      <li><input type="checkbox" value="3000 AND 4000" class="item_filter price">3000 - 4000</li>
      <li><input type="checkbox" value="4000 AND 5000" class="item_filter price">4000 - 5000</li>
</ul>

and here is my back end code to filter
<?php
    $price="";
   $price = isset($_REQUEST['price'])?$_REQUEST['price']:"";

   $sql = "SELECT * FROM wm_products WHERE pro_live='N'";
            if(!empty($price)){
                  $price =implode("','",$price);
                  $sql  .= " and pro_price between $price";
            }

$result = $conn->query($sql);
      if($result->num_rows > 0){
            while($row = $result->fetch_assoc()){
                ?>
                       .........result which checkbox selected
                <?php
               }
        }
?>

In sort my select query created like this ( SELECT * FROM `wm_products` WHERE pro_live='N' AND pro_price BETWEEN 2000 AND 3000, 4000 AND 5000 )
Avatar of Kent Olsen
Kent Olsen
Flag of United States of America image

Hi Milind,

CheckBoxes allow you to check more than one.  Unless you take steps to manage what happens when more 1 are selected you can get odd behavior like you're seeing now.

Perhaps you want radio buttons, where only 1 button at a time can be selected?
ASKER CERTIFIED SOLUTION
Avatar of Dustin Saunders
Dustin Saunders
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Milind Bhuvad

ASKER

But how can implode checkbox value for between systax for this query

AND (pro_price BETWEEN 2000 AND 3000
OR pro_price BETWEEN 3000 AND 5000
OR pro_price BETWEEN 4000 AND 5000)

My query is

$sql = "SELECT * FROM wm_products WHERE ";
if(!empty($price)){
      $price =implode("','",$price);
      $sql  .= " and pro_price between $price";
}
You would just need to look at all the check boxes, and run through a for loop.

If the box is checked, add to the conditions.