使用PHP重新排序mySQL查询的结果,而不执行其他查询

时间:2010-08-10 18:50:14

标签: php mysql sql-order-by repeat

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

2 个答案:

答案 0 :(得分: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";
?>

答案 1 :(得分:0)

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

修改 否则,您可以使用JavaScript对表进行排序,而无需刷新页面。这是jQuery plugin,可以为您执行此操作。