我正在尝试使用复选框对产品进行价格过滤。 这是我的过滤器
0-500
501-1000
1001-2500
2501-5000
如果我选中一个复选框,则过滤器工作,但是当我选中多个复选框时,出现如下错误:注意:
试图在第11行的D:\ xamp \ htdocs \ product \ filter_ledtv.php中获取非对象的属性
下面我提供了我尝试过的代码,
这是我的HTML代码
<div class="control-group">
<label class="control control--checkbox"> 0-500
<input type="checkbox" value="0 AND 500" class="item_filter price"/>
<div class="control__indicator"></div>
</label>
</div>
<div class="control-group">
<label class="control control--checkbox"> 501-1000
<input type="checkbox" value="501 AND 1000" class="item_filter price"/>
<div class="control__indicator"></div>
</label>
</div>
<div class="control-group">
<label class="control control--checkbox"> 1001-2500
<input type="checkbox" value="1001 AND 2500" class="item_filter price"/>
<div class="control__indicator"></div>
</label>
</div>
<div class="control-group">
<label class="control control--checkbox"> 2501-5000
<input type="checkbox" value="2501 AND 5000" class="item_filter price"/>
<div class="control__indicator"></div>
</label>
</div>
这是我的php代码:
<?php
$price="";
$price = isset($_REQUEST['price'])?$_REQUEST['price']:"";
$sql = "SELECT * FROM wm_ledtv WHERE pro_live='N'";
if(!empty($price)){
$price =implode("'or pro_price between'",$price);
$sql .= " and pro_price between $price";
}
$result = $conn->query($sql);
if($result->num_rows > 0){
while($row = $result->fetch_assoc()){
?>
fliter product show.............
<?php
}
}
?>
答案 0 :(得分:0)
一些问题。
首先,您的复选框输入中没有name="price[]"
。
第二,您在价格范围周围添加了不合适的报价。应该是:
$price =implode(" or pro_price between ",$price);
如果您执行了echo $sql;
,您将发现查询看起来不正确,您将看到:
WHERE pro_price BETWEEN 0 AND 500'or pro_price between'501 AND 1000
您的代码也容易受到SQL注入的攻击。最好使用参数化查询,但至少应清理输入。