To ★Ann★:
基本原理是這樣的:
1. 保留你原先搜尋的條件,通常這個條件會放在網址。
2. 解析這段網址,把排序的欄位更換掉。
舉個例子,假設現在有個網址是這樣:
http://localhost/list.php?date=2007-12-25&status=1&col=id&order=asc
// 列出 2007-12-25 中 status 為 1 的資料
這裡資料列表預設排序欄位是 id asc ,也就是如果沒有指定的話,預設會在網址參數加上 &col=id&order=asc 。
假設我現在想依照人名反排序,那麼只要保留前面的 date=2007-12-25&status=1 ,然後把 &col=id&order=asc 換成 &col=name&order=desc 。
做法很多,我的方法主要是更動排序按鈕上的連結:
1. 利用 $_SERVER['QUERY_STRING'] 或 $_GET 排除掉 col 和 order 兩個參數,將剩下的條件參數保留下來 (也就是 date 和 status) 。強列建議使用陣列,而不要用字串剖析的方式。
2. 在建立排序按鈕時,先將剛剛保留的條件參數加上新的 col 和 order ,然後編成 Query String 。例如:
編號(遞增按鈕) => date=2007-12-25&status=1&col=id&order=asc
編號(遞減按鈕) => date=2007-12-25&status=1&col=id&order=desc
姓名(遞增按鈕) => date=2007-12-25&status=1&col=name&order=asc
姓名(遞減按鈕) => date=2007-12-25&status=1&col=id&order=desc
// 以此類推
3. 依序將目前的
http://localhost/list.php 加上剛剛編好的 Query String 然後放在每個按鈕的連結裡,這樣就完成了。
程式就讓你自己思考囉,因為這裡是不能給答案的。