專業漏水處理,免費現場勘查,精準工法根本止漏
價格公道,人員現場免費估價,立即來電
油漆工程找便宜來簡單殺價網就對了,讓您輕鬆比價,省時省荷包
絕對不吃虧,讓滿天喊價的黑心廠商無所遁形

首頁  •  j2h 論壇 • 程式設計討論     • 

[php] MySQL 資料庫的分頁處理

房東:小副
發表時間:2011-09-01


單純搭配 MySQL 資料庫進行增、刪、改、查功能,對於一般剛開始學習的朋友已經算是一個里程碑,因為可以延伸出相當多的應用;只是當資料筆數持續成長時,看著畫面越拉越長似乎不是辦法,這時候就可以嘗試進行分頁功能。



在設計分頁功能時,第一個會想到的問題是要分幾頁?而分頁的數量是基於符合條件資料總數計算出來,因此我們先嘗試計算這個數字:


mysql_connect("host","username","pass");

mysql_select_db("dbname");



$result1 mysql_query('SELECT count(*) FROM table');

$data1 mysql_fetch_row($result1);

// $data1[0] 就是資料總數





接著假定每頁要顯示 20 個項目,計算總頁數:


$per 20//每頁顯示項目數量

$pages ceil($data1[0]/$per); //總頁數





知道總頁數之後就可以產生相對頁數的連結,像是這樣:


for($i=1;$i<=$pages;$i++) {

    echo 
'<a href="?page='.$i.'">' $i '</a>';

}





產生的連結是透過網址傳遞希望瀏覽的頁面數字,我們可以透過全域變數取得;但是使用者提供的資料並非絕對正確,而且可能含有惡意的參數,因此需要增加一些過濾的手續:


if(!isset($_GET["page"])){

    
$page=1//設定起始頁

} else {

    
$page intval($_GET["page"]); //確認頁數只能夠是數值資料

    
$page = ($page 0) ? $page 1//確認頁數大於零

    
$page = ($pages $page) ? $page $pages//確認使用者沒有輸入太神奇的數字

}





現在程式流程已經可以知道使用者位於哪個頁面,接著計算該頁面需要出現哪些資料?因為剛剛已經設定了每頁顯示 20 筆資料,因此我們只需要計算這 20 筆資料要從哪裡開始:


$start = ($page-1)*$per//每頁起始資料序號





因為 MySQL 資料庫的第一筆資料序號為零,因此第一頁的資料是從第零筆開始。



到這裡需要的參數都準備好了,我們就正式到資料庫去取得所需要的資料,並且將它顯示在畫面上:


$result2 mysql_query('SELECT * FROM table LIMIT ' $start ', ' $per);

while(
$data2 mysql_fetch_row($result2)) {

    
print_r($data2);

}





這裡有兩個需要注意的地方:

1. 養成習慣,取得需要的欄位就好,不要每次都嘗試用星號(*)取得全部資料

2. 實際的操作中記得先確認有沒有符合條件的資料( mysql_num_rows() ),避免程式空轉或是發生未能預期的錯誤

為了不要模糊焦點,這裡選擇了比較粗糙的方式處理。



一個比較陽春的分頁功能這樣就完成了,下面幾個方向就留給各位去思考、練習:

1. 頁數連結太多時該如何處理?

2. 如何重複利用這樣的程式碼?





  • 贊助網站       

    廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲
    完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心!
    廣利不動產-新板特區指名度最高、值得您信賴的好房仲
    您的托付,廣利用心為您服務



  •  共 0 人回應

    姓名:
    佈告內容:
    其他選項: