【问题标题】:Reorder the results of a mySQL query using PHP without performing another query [closed]使用 PHP 重新排序 mySQL 查询的结果而不执行另一个查询 [关闭]
【发布时间】:2010-08-10 18:50:13
【问题描述】:

我不知道这是否可能。我显示一个结果表,并希望能够按任何列对表进行排序。我不需要帮助制作这样一张桌子;我只需要有关重新排序查询结果的信息,而无需使用不同的 ORDER BY 指令重复它。

【问题讨论】:

    标签: php mysql sql-order-by repeat


    【解决方案1】:

    我可能会使用某种客户端脚本来执行此操作,我知道那里有几个 JavaScript 或 DHTML 选项。这些将为您的用户(无论如何在大多数机器上)更快地执行,并避免对数据库的不必要的访问。我想我最后看到的是这个:http://www.kryogenix.org/code/browser/sorttable/

    但是,如果您真的有兴趣使用 SQL 查询来执行此操作……那么您的表就会包含结果,类似于:

    <table>
    <tr>
    <th><a href='page.php?orderby=name'></th>
    <th><a href='page.php?orderby=blah'></th>
    ....
    </table>
    

    然后在构造查询时,您可以简单地执行以下操作:

    <?php
    $sql = "select * from sometable";
    switch ( $_REQUEST['orderby'] ) {
        case "name": $sql .= " order by name"; break;
        case "blah": $sql .= " order by blah"; break;
        default: $sql .= " order by whatevercolumnyouwantasdefault";
    }
    ...
    ?>
    

    或者甚至像这样简单的事情,假设您检查了 $_REQUEST 值并确定它们是合法的:

    <?php
    $sql = "select * from sometable";
    if ( isset($_REQUEST['orderby']) )
        $sql .= " order by ".$_REQUEST['orderby'];
    else
        $sql .= " order by whatevercolumnyouwantasdefault";
    ?>
    

    【讨论】:

    • javascript 方法是我一直在寻找的。这是我第一次尝试制作可排序的表格。
    【解决方案2】:

    也许您可以将结果存储在某种数组中。

    编辑: 否则,您可以使用 JavaScript 对表格进行排序,而无需刷新页面。这里有一个jQuery plugin 可以为你做这件事。

    【讨论】:

    • 我想以某种方式将结果存储在一个数组中并使用 PHP 对它们进行排序,但我不确定与其他方法相比在速度方面如何。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多