【问题标题】:Dynamic sort by header in PHPPHP中按标题动态排序
【发布时间】:2018-09-08 22:13:01
【问题描述】:

我正在尝试在 Name 上创建一个动态标题,使用户能够按 ASC 或 DESC 排序,结果来自 MySQL 中的“注册”表。我已经尝试了几个编码,但到目前为止还没有给出正确的结果。希望有人能够帮助我:)

我尝试创建另一个变量,但无法创建正确的变量。

<?php
    $sql = "SELECT * FROM register";
    if($sqlData = mysqli_query($db, $sql)) {
        if(mysqli_num_rows($sqlData) > 0) {
            echo "<table border ='1' bgcolor='#FFF' width='100%'>";
                echo "<tr>";
                    echo "<th><a href='overview.php?order=name'>Name</a></th>";
                    echo "<th>Score</th>";
                echo "</tr>";
            while($row = mysqli_fetch_array($sqlData)) {
                echo "<tr>";
                    echo "<td>" . $row['name'] . "</td>";
                    echo "<td>" . $row['score'] . "</td>";
                    echo "</tr>";
            }


            echo "</table>";
            mysqli_free_result($sqlData);
        } else{
            echo "No results in DB";
        }

    } else{
        echo "Error couldn't connect $sql. " . mysqli_error($db);
    }
    mysqli_close($db);
?>  

【问题讨论】:

  • 注意:mysqli 的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query 接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)$db-&gt;prepare("…") 过程化接口是 PHP 4 时代引入 mysqli API 时的产物,不应在新代码中使用。
  • 注意:试着改掉在一次性变量中声明 SQL 语句的习惯,这些变量只使用一次。在将查询直接提供给函数的情况下,跟踪代码要容易得多,并且不再有可能搞砸并发送$sql3而不是视觉上相似的$sql8
  • 为什么不在客户端通过javascript进行列排序呢?有大量的库可以帮助您解决这个问题,因此您不必滚动自己的表格排序代码。还是我误解了这个问题。
  • 您要做的最后一件事是返回 php 服务器,该服务器返回 mysql 只是为了在每次有人点击时重新获取具有所需排序的结果。这是不必要的昂贵,作为用户,我会非常沮丧页面重新加载,每次点击时都等待服务器响应。即使重新加载是通过 ajax 响应进行的,当您可以在客户端的 javascript 中进行排序并完成它时,让您的 mysql 服务器一遍又一遍地咳出相同的结果也是很昂贵的。
  • 此外,还有一些很棒的库可以制作出非常漂亮的表格,并赋予它各种功能,而不仅仅是 html 。 Like this one that works with bootstrap.

标签: php mysql columnsorting


【解决方案1】:

嗯,每次用户单击表的标题时使用 MySQL 对表进行排序不是一个好主意。 我建议你使用javascript。 Example

【讨论】:

    猜你喜欢
    • 2014-10-12
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2016-03-02
    相关资源
    最近更新 更多