Avatar of Milind Bhuvad
Milind Bhuvad
Flag 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 )
PHPMySQL Server

Avatar of undefined
Last Comment
Dustin Saunders

8/22/2022 - Mon
Kent Olsen

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
Dustin Saunders

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
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";
}
Dustin Saunders

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.
I started with Experts Exchange in 2004 and it's been a mainstay of my professional computing life since. It helped me launch a career as a programmer / Oracle data analyst
William Peck