首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤产品使用价格在范围内

过滤产品使用价格在范围内
EN

Stack Overflow用户
提问于 2018-12-15 10:18:55
回答 1查看 290关注 0票数 1

我试着做产品的价格过滤器,使用复选框。这是我的过滤器

代码语言:javascript
复制
0-500
501-1000
1001-2500
2501-5000

如果我选择了一个复选框,然后过滤工作,但是当我选择多个复选框时,请给我一个错误:注意:

试图在第11行的D:\xamp\htdocs\product\filter_ledtv.php中获取非对象的属性

下面我提供了我尝试过的代码,

这里是我的代码

代码语言:javascript
复制
<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代码:

代码语言:javascript
复制
<?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
    }
}
?>
EN

回答 1

Stack Overflow用户

发布于 2018-12-15 10:30:32

几个问题。

首先,您的复选框输入中没有name="price[]"

第二,你在价格范围内添加了不恰当的报价。它应该是:

代码语言:javascript
复制
$price =implode(" or pro_price between ",$price);

如果您做了echo $sql;,您就会看到查询看上去不对,您会看到:

代码语言:javascript
复制
WHERE pro_price BETWEEN 0 AND 500'or pro_price between'501 AND 1000

您的代码也容易受到SQL注入的影响。最好使用参数化查询,但至少应该对输入进行消毒。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53791430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档