2017-07-22 137 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並添加訂單,訂單不響應。爲什麼? –