2015-04-22 58 views
2

好的,所以我設法實現排序,當你點擊thead的鏈接。但是,如果我想要更改asc desc我必須更改代碼, 是否有任何方式使用PHP,如果我可以按降序排序表,如果它顯示爲asc?Mysqli桌子與thead排序?

例如僞: 如果當前列是asc然後排序desc?

這裏是我當前的代碼:

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

這是我的鏈接結構:

路線ID

要確認,當用戶點擊它會排序的鏈接,如果點擊同樣的鏈接,它會排序相反的方式。

回答

1

可以撤消陣列,所以如果他們首先排序ASC將成爲遞減:

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); 
+0

即時通訊新的php kindy請解釋如何實現這樣的數組? – Elevant

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; 
} 

希望它有幫助。

+0

如果我使用會話,我是否需要在某處定義會話?因爲當我測試了這個,它是說未定義的會話 – Elevant

+0

你將不得不在你的腳本開始 - 「if(session_id()==''){session_start();}' –