如何使用标题行按字母顺序对数据表进行排序

时间:2013-10-16 15:29:35

标签: php sql sorting

我正在做一个sch项目,我需要帮助按字母顺序对数据表进行排序,方法是单击标题行。我使用MySQL,我打算用PHP来实现它。谁能帮我?感谢。

这是我的代码:

这是一个php文件。

<?php


  @ $db = new mysqli('localhost', 'f33s01', 'f33s01', 'f33s01');

  if (mysqli_connect_errno()) {
     echo 'Error: Could not connect to database.  Please try again later.';
     exit;
  }

  $query = "select * from gyms";
  $result = $db->query($query);

  $num_results = $result->num_rows;


  echo "<table border=\"3\" cellpadding=\"5\" class=\"dirtable\" style=\"margin-bottom:15px\">
        <tr align=\"center\" class=\"gold\">
        <th>Number</th>
        <th>Gym Name</th>
        <th>Address</th>
        <th>Location</th>
        <th width=\"18%\">Operating Hours</th>
        <th>Reservation</th>
        </tr>";

  for ($i=0; $i <$num_results; $i++) {
     $row = $result->fetch_assoc();

     echo "<tr>";
     echo "<td align=\"center\">".($i+1)."</td>";
     echo  "<td align=\"center\">".stripslashes($row['gymname'])."</td>";
     echo "<td>".stripslashes($row['address'])."</td>";
     echo  "<td>".stripslashes($row['location'])."</td>";
     echo  "<td align=\"center\">".stripslashes($row['operatinghours'])."</td>";
     echo  "<td align=\"center\"><input type= \"submit\" value=\"BOOK NOW\" class=\"bookbutton\"></td>";     
     echo "</td>";   
     echo "</tr>";

  }


      echo "</table>";    
      echo "</form>";


  $result->free();
  $db->close();

?>

1 个答案:

答案 0 :(得分:0)

要严格回答您的问题,您可以使用列标题中的链接将$ _GET变量传递到您的页面,并使用SORT BY自定义您的mysql查询以呈现数据。我会给出一个粗略的轮廓,这应该让你指向正确的方向。您需要在标题网址上添加更多逻辑,以便在多个方向上进行排序。

标题:

echo "<th><a href='".$_SERVER[REQUEST_URI]."?orderby=gymname&order=desc'>Gym Name</a>";

然后在你的mysql代码之前,有一个switch语句

switch($_GET[orderby]) {
    case "gymname":
        $filter_orderby = "gymname";
        break;
    case "address":
        $filter_orderby = "address";
        break;
    //...other cases...
}
switch($_GET[order]) {
    case "desc":
        $filter_order = "DESC";
        break;
    case "asc":
        $filter_order = "ASC";
        break;
}

现在,您可以将它们附加到您的查询中:

$myquery = "SELECT * FROM gyms WHERE 1 = 1";
if(isset($filter_orderby) {
    $myquery .= " ORDER BY ".$filter_orderby." ".$filter_order;
}
//Result: SELECT * FROM gyms WHERE 1 = 1 ORDER BY gymname DESC

如果这些数据没有分页,或者在非平面演示文稿中,那么我同意Nikita Singh关于使用jQuery插件的建议 - 另一个是http://tablesorter.com/