【发布时间】:2010-08-10 18:50:13
【问题描述】:
我不知道这是否可能。我显示一个结果表,并希望能够按任何列对表进行排序。我不需要帮助制作这样一张桌子;我只需要有关重新排序查询结果的信息,而无需使用不同的 ORDER BY 指令重复它。
【问题讨论】:
标签: php mysql sql-order-by repeat
我不知道这是否可能。我显示一个结果表,并希望能够按任何列对表进行排序。我不需要帮助制作这样一张桌子;我只需要有关重新排序查询结果的信息,而无需使用不同的 ORDER BY 指令重复它。
【问题讨论】:
标签: php mysql sql-order-by repeat
我可能会使用某种客户端脚本来执行此操作,我知道那里有几个 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 对表格进行排序,而无需刷新页面。这里有一个jQuery plugin 可以为你做这件事。
【讨论】: