2017-07-22 103 views
0

我希望你一直在乎! 我是问:过滤产品价格和并排序升序降序PHP MYSQLI

  1. 如果我滤清器产品通过形式价格最小到最大,可以查看一步过滤后已经确定

  2. (1号)和比过滤ASC,DESC条件为什么我的看法页面是“为foreach()提供的无效参数”,为什么这样呢?

<?php 
    include("config.php"); 
    $all_brand=$db->query("SELECT distinct brand FROM `products` WHERE category_id = '1' GROUP BY brand"); 
    // Filter query 
    $sql= "SELECT distinct * FROM `products` WHERE category_id = '1'"; 

    if(isset($_GET['brand']) && $_GET['brand']!="") : 
     $sql.=" AND brand IN ('".implode("','",$_GET['brand'])."')"; 
    endif; 

    if(isset($_GET['sort_price']) && $_GET['sort_price']!="") : 
     if($_GET['sort_price']=='price-asc-rank') : 
      $sql.=" ORDER BY price ASC"; 
     elseif($_GET['sort_price']=='price-desc-rank') : 
      $sql.=" ORDER BY price DESC"; 
     endif; 
    endif; 

    // filter by input price 
    if(isset($_GET['min']) && $_GET['min']!="") : 
    $sql.="AND price >= '".$_GET['min']."' "; 
    endif; 

    if(isset($_GET['max']) && $_GET['max']!="") : 
    $sql.="AND price <= '".$_GET['max']."' "; 
    endif; 

    $all_product=$db->query($sql); 
    ?> 

和我的形式:

*******filter ASC and DESC ********** 
<div class="panel list">     
         <div class="col-sm-2"> 
          <select name="sort_price" class="sort_rang" id="sort"> 
           <option value="">Paling baru</option> 
         <option <?=(isset($_GET['sort_price'])&&($_GET['sort_price']=='price-asc-rank')? 'selected="selected"' : '')?> value="price-asc-rank">Harga:Rendah ke tinggi </option> 

         <option <?=(isset($_GET['sort_price'])&&($_GET['sort_price']=='price-desc-rank') ? 'selected="selected"' : '')?> value="price-desc-rank">Harga:Tinggi ke rendah</option> 
          </select> 
         </div> 
        </div> 

    <!-- filter price --> 
         <div class="sidebar-row"> 
         <h4>RENTANG HARGA</h4> 
           <input type="text" name="min" id="min" placeholder=" Mulai dari harga" onkeypress="return AllowOnlyNumbers(event);" value="<?php echo isset($_GET['min']) ? $_GET['min'] : ''; ?>"> <br> 
           <br> 
           <input type="text" name="max" id="max" placeholder=" Sampai dgn harga" onkeypress="return AllowOnlyNumbers(event);" value="<?php echo isset($_GET['max']) ? $_GET['max'] : ''; ?>"> <br> 
           <br> 
           <input type="submit" class="sort_rang" value="Tampilkan"> 
         </div> 
+0

你正在把一个和后面的顺序,将导致你的错误。顺序需要是最后的,并且是倒数第二。和之前来了。 – Doug

+0

奥克兄弟..你有顶级的解决方案。在此之前谢谢 –

回答

0

你不能把你的价格WHEREORDER后:

include("config.php"); 
$all_brand=$db->query("SELECT distinct brand FROM `products` WHERE category_id = '1' GROUP BY brand"); 
// Filter query 
$sql= "SELECT distinct * FROM `products` WHERE category_id = '1'"; 

if(isset($_GET['brand']) && $_GET['brand']!="") 
    $sql.=" AND brand IN ('".implode("','",$_GET['brand'])."')"; 

// filter by input price 
if(isset($_GET['min']) && $_GET['min']!="") 
    $sql.="AND price >= '".$_GET['min']."' "; 

if(isset($_GET['max']) && $_GET['max']!="") 
    $sql.="AND price <= '".$_GET['max']."' "; 

if(isset($_GET['sort_price']) && $_GET['sort_price']!="") : 
    if($_GET['sort_price']=='price-asc-rank') 
     $sql.=" ORDER BY price ASC"; 
    elseif($_GET['sort_price']=='price-desc-rank') 
     $sql.=" ORDER BY price DESC"; 
endif; 


$all_product=$db->query($sql); 

BTW:你的代码是SQL注入漏洞。这是不好的,了解更多:http://bobby-tables.com/php

+0

是啊兄弟...这很棒的解答,谢谢.. 但我觉得更多的问题。 问题是: 如果购物车顺序(第一)是oke,但是如果在第二个页面之后运行分页。 2或3或4并添加订单,订单不响应。为什么? –