我在PHP中有一个像这样的脚本:
if(isset($_GET["ord"]))
{
switch($_GET["ord"])
{
case 1: $ord = "name ASC";
break;
case 2: $ord = "surname ASC";
break;
case 3: $ord = "date ASC";
break;
case 4: $ord = "zone ASC";
break;
case 5: $ord = "latency DESC";
break;
default: $ord = "name ASC";
break;
}
}
else
{
$ord = "name ASC";
}
并在如下代码中使用它:
$res = mysql_query("SELECT people.name AS Name, surname, date, zone, latency FROM people WHERE online=1 ORDER BY $ord");
$content->ADD('<table class="online"><tr><th><a href="?s=online&ord=1">Name</a></th><th><a href="?s=online&ord=2">Surname</a></th><th><a href="?s=online&ord=3">Date</a></th><th><a href="?s=online&ord=4">Zone</a></th><th><a href="?s=online&ord=5">Latency</a></th></tr>');
while ($resss = mysql_fetch_array($res))
{
$content->ADD('<tr><td align="center">'.$resss["name"].'</td>');
$content->ADD('<td>'.$resss["surname"].'</td>');
$content->ADD('<td>'.$resss["date"].'</td>');
$content->ADD('<td>'.$resss["zone"].'</td>');
$content->ADD('<td>'.$resss["latency"].'</td>');
$content->ADD('</tr>');
}
它实际上工作起来非常糟糕,但是当我需要更改ASC和DESC排序时却遇到了问题-所以我的问题是如何重写我的脚本,使其也可以用于中断数据中的acs / desc排序中?谢谢。
最佳答案
假设您有一个标题行,名称如下:
$content->ADD('<tr><td align="center">Name</td>');
您可以将其更改为:
$sort_order = "name ASC";
if($ord == 'name ASC') {
$sort_order = "name DESC";
}
$content->ADD('<tr><td align="center"><a href="?ord=$sort_order">Name</a></td>');
然后,当脚本处理“ ord”变量时,它将基于“名称”列标题。完成此操作后,您可能需要使用“?sortby = name&sortorder = ASC”请求变量之类的方式来稍微更改变量,但是首先使上面的内容起作用,然后您将看到它。
关于php - 如何最好地用PHP脚本从MySQL表中对数据排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10918571/