我正在做一个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();
?>
答案 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/