一尘不染

如何对从MySQL调用的HTML表行进行排序

mysql

我知道这是很基本的事情,但是Google搜索并没有显示单击th链接后如何对行进行重新排序。

我有这个:

<table border="1">
  <tr>
    <th>Type:</th>
    <th>Description:</th>
    <th>Recorded Date:</th>
    <th>Added Date:</th>
  </tr>

<?php 
while($row = mysql_fetch_array($result)){
    ?>
    <tr>
        <td><?php echo $row['type'] ?></td>
        <td><?php echo $row['description'] ?></td>
        <td><?php echo $row['recorded_date'] ?></td>
        <td><?php echo $row['added_date'] ?></td>
    </tr>
    <br />


  <?php 
}
mysql_close();
?>
</table>

我需要能够按type字母顺序单击并排序,然后单击Recorded DateAdded Date并按日期排序。我看到我需要MySQL查询来执行此操作,但是是否将它们设置为带有a href标签的条件查询?


阅读 212

收藏
2020-05-17

共1个答案

一尘不染

最简单的方法是在您的列标题上放置一个链接,指向同一页面。在查询字符串中,放置一个变量,以便您知道他们单击了什么,然后在SQL查询中使用ORDER
BY进行排序。

HTML看起来像这样:

<th><a href="mypage.php?sort=type">Type:</a></th>
<th><a href="mypage.php?sort=desc">Description:</a></th>
<th><a href="mypage.php?sort=recorded">Recorded Date:</a></th>
<th><a href="mypage.php?sort=added">Added Date:</a></th>

并在php代码中,执行以下操作:

<?php

$sql = "SELECT * FROM MyTable";

if ($_GET['sort'] == 'type')
{
    $sql .= " ORDER BY type";
}
elseif ($_GET['sort'] == 'desc')
{
    $sql .= " ORDER BY Description";
}
elseif ($_GET['sort'] == 'recorded')
{
    $sql .= " ORDER BY DateRecorded";
}
elseif($_GET['sort'] == 'added')
{
    $sql .= " ORDER BY DateAdded";
}

$>

注意,您不应直接采用$ _GET值并将其附加到查询中。正如某些用户可以访问MyPage.php?sort =;一样。从MyTable删除;

2020-05-17