我在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&amp;ord=1">Name</a></th><th><a href="?s=online&amp;ord=2">Surname</a></th><th><a href="?s=online&amp;ord=3">Date</a></th><th><a href="?s=online&amp;ord=4">Zone</a></th><th><a href="?s=online&amp;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/

10-14 14:02
查看更多