SQL ORDER BY / Sort Php

时间:2011-10-22 17:15:23

标签: php

我正在努力学习我的php,并希望在正确的方向上提供一些帮助。到目前为止,这是我的代码:

    <?php
    $connection = mysql_connect("localhost", "root") or die(mysql_error());
    mysql_select_db("rsi", $connection) or die(mysql_error());

    $query = "SELECT * FROM events"; 
    $result = mysql_query ($query) or die ("error in query"); 

if (mysql_num_rows($result)>0) {
    echo "<table border=1></tr>" .
        "<th>ID</th>" .
        "<th>Name</th>" .
        "<th>Date</th>" .
        "<th>Location</th>" ;

while ($row = @ mysql_fetch_array($result)){
             print "<tr>";
             print "<td>".$row['id']."</td>"; 
             print "<td>".$row['name']."</td>"; 
             print "<td>".$row['date']."</td>"; 
             print "<td>".$row['location']."</td>"; 
             print "</tr>"; 
}
print "</table>";
}


?>

我现在希望通过单击每个/任何标题(例如日期)来从数据库中排序结果。谢谢你的时间。

4 个答案:

答案 0 :(得分:0)

要订购结果,请使用ORDER BY

以下是按ID排序的示例:

$query = "SELECT * FROM events ORDER BY id";

要在单击标题时进行订购,您需要以某种方式执行新查询。怎么做我留给你找。通常,您使用参数重新加载整个页面,或者使用ajax,这样您就可以更新页面上的内容而无需重新加载页面。

答案 1 :(得分:0)

您必须按列名称传递订单,并按GET或POST升序或降序。 以下是GET的一个例子。

$query = "SELECT * FROM events"; 
if(isset($_GET['sort'])
{
    $query.= ' order by '.mysql_real_escape_string($_GET['sort']).' '.mysql_real_escape_string($_GET['order']);
}
$result = mysql_query ($query) or die ("error in query"); 


while ($row = @ mysql_fetch_array($result)){
       print "<tr>";
       print "<td>".$row['id']."</td>"; 
       print "<td>".$row['name']."</td>"; 
       print "<td><a href='http://www.domain.com/currentpageurl?sort=date&order=asc'>".$row['date']."</td>"; 
       print "<td>".$row['location']."</td>"; 
       print "</tr>"; 
    }

答案 2 :(得分:0)

如果您使用Shakti的答案,我建议您不要在查询中直接使用$ _GET。我会通过某种健全性检查来运行你的$ _GET并且只允许特定的值,否则你会让你的站点对SQL注入攻击开放。

答案 3 :(得分:0)

我认为您希望在浏览器中对表格进行排序。您可能不希望仅以不同的排序顺序查询数据库中的相同信息。这样的事可能是:http://tablesorter.com/docs/#Demo

使用tablesorter:

  1. 将代码的一行更改为:
  2. echo "<table border=1 id="myTable" class="tablesorter"><tr>"
    ."<th>ID</th>" ."<th>Name</th>" ."<th>Date</th>"
    ."<th>Location</th></tr>" ;
    
    1. 在正文末尾添加此行:
    2. <script>
          $(document).ready(function() 
              { 
                  $("#myTable").tablesorter(); 
              } 
          ); 
      </script>
      
      1. 如果您还没有jquery,请将其添加到<Head>部分:
      2. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
        
        1. http://tablesorter.com/__jquery.tablesorter.zip下载jquery.tablesorter.js

        2. 包含文件jquery.tablesorter.js,如下所示:

        3. <script type="text/javascript" src="/path/to/jquery.tablesorter.js"></script>