在URL中传递两个不同的参数来过滤数据

时间:2014-06-09 12:28:01

标签: php html

我有类似电子商务网站的东西,我可以按类别和价格,观点,日期和喜欢过滤产品。 所以我做了两个变量$ catig和$ sort:第一个param采用了类别的名称,只展示了该类别中的产品,第二个param按照喜欢,日期等方式过滤了这些产品......

 <a href="index.php?catig=computers">Computers</a>
 <a href="index.php?catig=books">Books</a>
 <a href="index.php?catig=software">Software</a>

 <a href="index.php?sort=date">Date</a>
 <a href="index.php?sort=likes">Likes</a>
 <a href="index.php?sort=price">Price</a>

我的问题在于,例如当我选择计算机作为类别时,这就是URL的样子

  

的index.php?catig =计算机

如果我想按价格对这些计算机进行排序,这就是网址的样子

  

的index.php?排序=价格

它给了我按价格排序的所有产品,而不仅仅是电脑。 我想如果我选择电脑,我点击价格,我想按价格对电脑进行排序。我希望URL看起来像这样

  

的index.php catig =计算机&安培;排序=价格

所以任何人都可以告诉我如何在第一个参数设置时添加第二个参数。 这是我正在使用的PHP代码:

if (isset($_GET['catig'])) {
   $q = $_GET['catig'];
   if (isset($_GET['sort'])) {
      $s = $_GET['sort'];
      $sqll = "SELECT * FROM services  WHERE catigory= '$q' ORDER BY $s asc" ; 
   } else {
      $sqll = "SELECT * FROM services  WHERE catigory= '$q' ORDER BY id asc" ; 

} else {
   if (isset($_GET['sort'])) {
      $s = $_GET['sort'];
      $sqll = "SELECT * FROM services   ORDER BY $s asc" ; 
   } else {
      $sqll = "SELECT * FROM services ORDER BY id asc " ;
      }   
}

2 个答案:

答案 0 :(得分:0)

不确定您对代码的了解程度,但以下解决方案应该适合您。 包括以下js:

<script>
    function addParam(url, param, value) {
       var a = document.createElement('a'), regex = /[?&]([^=]+)=([^&]*)/g;
       var params = {}, match, str = []; a.href = url; value=value||"";
       while (match = regex.exec(a.search))
           if (param != match[1]) str.push(match[1] + "=" + match[2]);
       str.push(encodeURIComponent(param) + "=" + encodeURIComponent(value));
       a.search = (a.search.substring(0,1) == "?" ? "" : "?") + str.join("&");
      // return a.href;
       window.location.href = a.href;
    }
</script>

然后编辑您的排序选项卡href值,如下所示:

<a href="javascript:addParam(window.location.href, 'sort', 'date');">Date</a>
 <a href="javascript:addParam(window.location.href, 'sort', 'likes');">Likes</a>
 <a href="javascript:addParam(window.location.href, 'sort', 'price');">Price</a>

答案 1 :(得分:0)

我建议将这些Href更改为单选按钮。类似的东西:

<input type="radio" name="catig" value="computers"> Computers
<input type="radio" name="catig" value="books"> Books 

加:

<input type="radio" name="sort" value="price"> Price
<input type="radio" name="sort" value="likes"> Likes

然后你就可以获得你所追求的网址。