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

用户名

我有一个类似电子商务网站的网站,在这里我可以按类别,价格,视图,日期和喜欢来过滤产品。所以我做了两个变量$ catig和$ sort:第一个参数采用类别的名称并仅显示该类别中的产品,第二个参数按likes,date,...过滤这些产品。

 <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 =计算机

如果我想按价格对这些计算机进行排序,这就是URL的外观

index.php?sort =价格

它为我提供了按价格排序的所有产品,而不仅仅是计算机。我想如果我选择计算机,然后单击价格,我只想按价格对计算机进行排序。我希望网址看起来像这样

index.php?catig = computers&sort = price

所以任何人都可以告诉我如何在设置第一个参数时添加第二个参数。这是我正在使用的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 " ;
      }   
}
戈迪纳尔

不知道您对代码有多少了解,但是下面的解决方案应该对您有用。包括下面的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>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从URL传递日期参数以过滤数据库中的条目列表

在 octobercms 的 url 中传递两个参数

如何根据两个不同列中的两个参数搜索和过滤Google表格

如何在不同的场合在一个函数中传递两个参数?

如何在过滤器Angular JS中传递两个参数?

如何传递两个参数并在php中获得过滤后的结果?

如何在nsFetchRequest中创建根据不同实体的两个参数过滤的compoundpredicate

如何从两个不同的函数传递参数

传递两个不同类型的参数

在运行循环以抓取数据时,将两个参数传递给 url 元素

如何在Django的单个函数中传递两个不同的参数?

如何在Node.js中以相同的形式传递两个不同的参数

过滤变量以连接两个不同维度的数据框

如何在React Native中显示来自两个不同键值的过滤后的JSON数据

简化传递两个两个不同函数的相同参数

我想将两个参数传递给URL

用于在不同活动中的两个编辑文本之间传递数据的 Android Studio .code

如何在ArrayHelper Yii2中传递两个不同的查询数据?

在PHP / MySQL查询中传递两个或多个URL参数

如何在yii2中传递两个参数来创建绝对URL

如何使用@Compoundindex返回在GET请求中传递两个参数的数据?

如何在api中传递两个参数来更新数据?

两个具有相同 URL 但参数不同的 @GetMapping

在javascript中传递两个不同的变量?

如何根据两个参数从两个表中选择不同的数据?

如何在AsyncTask中传递两个参数?

在子查询中传递两个参数

在使用lambda的函数中传递两个参数

从两个以上的活动中传递和检索参数