Re: [請益] 參數的傳遞問題
可用session來記錄翻頁的參數, 以下提供的做法僅供示意參考:
<?php
//開啟session:
session_start();
// page_no 及 direct 初始值指定:
if(!isset($_SESSION['page_no']))
$_SESSION['page_no'] = 1; // page_no 是1-base, 1就是代表頭頁.
if(!isset($_SESSION['direct']))
$_SESSION['direct'] = 'DESC';
if(!isset($_SESSION['page_size']))
$_SESSION['page_size'] = 10;
// 若 page_no 及 direct 有新值傳入, 則session的記錄值也要更新.
// (若無, 當然就無需變動)
if(isset($_REQUEST['page_no']))
$_SESSION['page_no'] = $_REQUEST['page_no'];
if(isset($_REQUEST['direct']))
$_SESSION['page_no'] = $_REQUEST['direct'];
$sql=sprintf("
select *
from myrecords
where 1=1
order by %s %s
limit %d,%d
",
'id',
strtoupper($_SESSION['direct']),
($_SESSION['page_no']-1)*$_SESSION['page_size'],
$_SESSION['page_size']
);
//撈資料
//套表輸出
?>
這樣的話, 只有在要換頁或是換排序方向時才需要在url上指定,
不然的話, 只會一直沿用舊值來顯示頁面. 例:
hxxp://bobju.cxm/a.php?page_no=5&direct=DESC //以倒序排資料,顯示第5頁.
hxxp://bobju.cxm/a.php //由於沒有指定page_no 及 direct, 所以沿用
//存在session當中的 page_no 及 direct 值,
//仍然以倒序排資料, 顯示第5頁.
偏好每次翻頁都採用以 url 來傳參數的理由當中, 其中之一是為了在web server
的日誌上留下記錄, 這從系統維護的角度來看, 有其意義在. 若用session來做的
話, 那就得自己在程式當中另外設計了.
※ 引述《rs6000 (小叮噹)》之銘言:
: 小弟目前自修PHP練習時發現一點問題想請教板上的前輩們
: 問題是這樣的,我照書上的範例做一個留言板
: 裡頭有分頁與排序的功能(可選日期或點閱數)
: 這兩個功能單獨用的時後是正常的。
: 但是無法合在一起用
: 尤其是點到其他分頁的時後再去按排序的功能
: 就會跳回第一頁。
: 由於書上的範例原本就有這個BUG。
: 我想應該是參數的傳遞上有缺陷
: 在我直接在網址列自行加上參數
: 網址:index_pub.php?page_num=2&sort=coun desc
: 這樣才能在分頁上做排序
: 要怎樣才能直接在程式中控制
: 跳到其他分頁時還能做排序的功能而設定不會跑掉呢?
: ps:板上有人買過文魁出版羅毅志先先寫的 PHP5+MySQL互動式網頁設計嗎?
: 書上的範例與光碟的檔案都無法執行...Orz
: 我才看到第4章就花不少時間除錯~程式才能跑 >"<
※ 編輯: bobju 來自: 58.115.151.184 (10/31 18:40)
推
10/31 21:26, , 1F
10/31 21:26, 1F
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章