【问题标题】:Price low - high / high - low filter PHP/Mysql价格低-高/高-低过滤PHP/Mysql
【发布时间】:2013-04-12 00:51:05
【问题描述】:

我正在寻找一种方法来创建基于价格选择我的产品的过滤器(选择下拉菜单)。

我知道通过这样的查询完全可以做到这一点:

SELECT * FROM products ORDER BY price ASC 
SELECT * FROM products ORDER BY price DESC 


但问题是我不想将GETS 传递给url 来选择查询。

是否可以执行 jquery 命令来填充结果?

这是我的选择:

<select name="filter">
<option value="lowHigh">Price: low - High</option>
<option value="highLow">Price: High - Low</option>
</select>

提前致谢。

【问题讨论】:

  • 您可以执行 jquery,该 jquery 会将所需的变量发布/获取到将执行查询的 .php 页面
  • 可以使用ajax与数据库交互。

标签: php html mysql filter


【解决方案1】:

我认为没有理由不通过 GET 传递这种查询。 仍然不可能注入/XSS,因为只有两个选项,用户无法添加他/她自己的信息。这正是 eBay、亚马逊等网站所做的。只需按照其他响应者的建议定义一个 get 变量。它非常安全,我推荐它。 如果您希望使用它来避免用户刷新,请使用 ajax - 默认情况下在 jQuery 中实现。

来自以下的 html:

<select id="filter">
<option value="lowHigh">Price: low - High</option>
<option value="highLow">Price: High - Low</option>
</select>

使用 jQuery 的:

$("#filter").change(function() {
    //Whatever ajax you wish to use
});

【讨论】:

  • 我不明白 :) 但是在下拉列表中选择(例如价格:低 - 高)后,如何在 url 中获取 GET 参数?我对 jquery 真的一无所知!
  • 您应该在下拉列表中添加一个侦听新选择的事件,从而在 jquery 中执行获取。这很容易使用 jQuery 选择器。如果你想了解 jQuery 选择器,你应该去:api.jquery.com/category/selectors 做你想做的事,选择元素的更改事件:api.jquery.com/change 然后在要执行的函数上,做 ajax 查询。还有什么问题请告诉我:)
【解决方案2】:

如果我理解正确,当下拉更改不使用 get 参数时,您需要在表格或页面中的某处填充数据。

如果是这样,您需要所谓的 ajax。由于您提到了 JQuery,因此 jquery 中内置了 ajax 功能。

$.ajax({
   type: 'post',
   url: URL_TO_YOUR_PHP_SCRIPT,
   data: {
      priceFilter: $('#filter').val()
   },
   dataType: 'json',
   success: function(result) {
      if (result) {
         $.each(result, function(i, item) {
            $('#your_table').append('<tr><td>'+item+'</td></tr>');
         }
      }
   }
});

你的 php 脚本:

$pricefilter = $_POST['priceFilter']; //assuming you testing if its set
$pricefilter = $pricefilter == 'lowHigh' ? 'ASC' : 'DESC';

$query = "SELECT * FROM products ORDER BY price $pricefilter";
$data = $query->fetchAll(); 
//Or whatever you are using MySQL or PDO (please dont use MySQL_* functions)

echo json_encode($data);

【讨论】:

    【解决方案3】:

    感谢你们的帮助,我成功地完成了我的剧本! (特别感谢 FunKy)
    看着这段 javascript,我完全理解它现在是如何工作的。谢谢你的课!
    这是最终的脚本:

    $("#filter").change(function() {
    //Whatever ajax you wish to use
    location.href = URL + 'index.php?action=over-ons&filter=' + $("#filter option:selected").val();
    });
    

    【讨论】:

      【解决方案4】:

      jQuery 脚本仍然需要向服务器端脚本传递一些东西来执行SELECT。没有什么可以阻止您执行以下操作:

      <?php
      
      $sort_dir = (isset($_GET['sort']) && $_GET['sort'] == 'desc') ? 'desc' : 'asc';
      
      $sql = "SELECT * FROM products ORDER BY price $sort_dir";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-23
        • 1970-01-01
        • 2016-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-09
        相关资源
        最近更新 更多