Mysqli表与thead排序?

时间:2015-04-22 07:46:07

标签: php sorting mysqli

好的,所以当你点击thead的链接时我已经设法实现了排序。但如果我想将asc更改为desc我必须更改代码, 有没有办法使用PHP,我可以将表排序为降序,如果它显示为asc?

例如伪: 如果当前列是asc,那么sort desc?

这是我目前的代码:

if (isset($_GET['sort'])) {
    $sorting = $_GET['sort'];
    $result = $mysqli->query("SELECT * FROM routes ORDER BY $sorting DESC");
}

这是我的链接结构:

路线ID

要确认用户点击链接的时间,它会进行排序,如果他们再次点击相同的链接,则会以相反的方式排序。

2 个答案:

答案 0 :(得分:1)

你可以反转数组,所以如果它们首先被排序,那么asc将成为desc:

array array_reverse ( array $array [, bool $preserve_keys = false ] )

为了达到这个目的:

if (isset($_GET['sort'])) {
    $sorting = $_GET['sort'];
    $result = $mysqli->query("SELECT * FROM routes ORDER BY $sorting DESC"); }

1.-将您的mysql结果资源转换为数组:

$routes = array();
while ($row = mysql_fetch_array($result)) {
    $routes[] = $row;
}

2.-反转结果数组

  $routes_asc = array_reverse($routes); 

答案 1 :(得分:1)

您可以在会话中存储最后一种排序类型。

if (isset($_GET['sort'])) {
    $sorting = $_GET['sort'];

    // check the last sort type used
    $sort = ($_SESSION['last_sort_type'] == 'DESC') ? 'ASC' : 'DESC';

    $result = $mysqli->query("SELECT * FROM routes ORDER BY $sorting $sort");

    // store it in session.
    $_SESSION['last_sort_type'] = $sort;
}

希望它有所帮助。