【问题标题】:PHP Sorting query results after the search is submitted搜索提交后PHP对查询结果进行排序
【发布时间】:2014-03-20 23:59:32
【问题描述】:

搜索完成且项目显示在屏幕上后,如何对查询结果进行排序?我希望用户能够根据价格、数据等的偏好重新排列结果的顺序。

$output ='';
    if(isset($_POST['search'])){
        $searchq = $_POST['search'];
        $searchq = preg_replace("#[^0-9a-z]#i","",$searchq);

        $query = mysql_query("SELECT * FROM `db_table` WHERE title LIKE '%$searchq%' OR description LIKE '%$searchq%' ORDER BY `date` ASC");
        $count = mysql_num_rows($query);
        if($count == 0){
            $output = 'No results found';
        }else{
            while($row = mysql_fetch_array($query)){
         //display divs

非常感谢所有帮助!

【问题讨论】:

  • 似乎可以使用 JavaScript 解决方案。
  • 我是这么认为的,但不确定如何使用 javascript 来做到这一点。可以举个例子吗?
  • 你可以做的是,用户选择排序首选项的地方,将其作为GET变量传递到同一页面,并在您的查询中检查GET变量是否存在,如果是,则使用该顺序或使用 date 作为默认值。
  • 取决于您呈现这些数据的方式。 Datatables 对你来说可能是一个很好的 Javascript 解决方案。您将需要学习如何将数据库查询格式化为 JSON,但这可能是值得的Server Side Data
  • 数据表怎么样?,这很容易实现datatables.net

标签: php


【解决方案1】:

之后?您可以在 Javascript 中操作 html。

有很多方法,很多库。 我发现的第一个是那个:

https://datatables.net/

你也可以在没有库的情况下做到这一点,但会更难。

【讨论】:

  • 事情是我不希望它被限制为表格格式,因为我的结果显示在 div 中,并且我有用于更改订单的单选按钮。有没有办法实现这个库来做到这一点?
  • 在 div 中显示数据表可能是一个错误的选择,但这是一个猜测。否则,您可以重新加载页面,更改查询。
  • 嗯,我有帖子,而且都是样式化的,我希望它们能一个接一个地很好地显示出来,而不是一个结构化的表格
【解决方案2】:

您可以通过 $_GET 发送一些数据,然后在查询中执行以下操作:

$query = mysql_query("SELECT * FROM `db_table` WHERE title LIKE '%$searchq%' OR description LIKE '%$searchq%' ORDER BY `".$_GET['orderby']."` ASC");

当然,您应该保护代码免受 SQL 注入;)

【讨论】:

【解决方案3】:

如果你使用 jquery,这个插件非常有效而且很小 http://tablesorter.com/docs/#Demo

【讨论】:

  • 在不使用表格的情况下有什么方法可以做到这一点?我有 div 和单选按钮,它们通过使用查询来更改 div 的顺序
猜你喜欢
  • 2021-08-19
  • 2011-10-16
  • 2018-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 2011-07-13
相关资源
最近更新 更多