2012年3月7日 星期三

PHP分頁實作

PHP分頁在多筆資料呈現的時後就必須要使用的功能
但網路上許多例子能夠講述對於初學者而言的內容並不多
以下是我當初在寫PHP分頁的一個小小例子
在下面主要分為兩個段落,並以命名test.php

第一部份主要是要向資料庫取得有幾筆資料
同時進行要分作幾頁的處理:
$page;

if(!isset($_GET["page"])) //isset 在此是判斷後方參數是否存在
    $page=1; //設定起始頁 
else
    $page = intval($_GET["page"]); //確認頁數只能夠是數值資料

$query = "SELECT * FROM `show_page` ";

if ( !( $database = mysql_connect( "localhost", "iw3htp4", "iw3htp4" ) ) )
die( "Could not connect to database " );

if ( !mysql_select_db( "delicacy_db", $database ) )
die( "Could not open URL database " );

if ( !( $result = mysql_query( $query, $database ) ) )
{
    print( "Could not execute query!" );
    die( mysql_error() . "" );
}

$items = mysql_affected_rows(); //取得總項數,以便算出分頁須幾頁

$per = 10; //設定每頁顯示項目數量
$pages = ceil($items/$per); //計算總頁數
$start = ($page-1)*$per; //每頁起始資料序號,以便分次藉由sql語法去取得資料       

$query1 = "SELECT * FROM `show_page` LIMIT   $start  ,  $per "; //每點任一分頁便執行取得該頁數的資料筆數

$result = mysql_query( $query1, $database );    

mysql_close( $database );

第二部份主要是針對頁碼的處理:
for($i = 1; $i <= $pages; $i++)
{
    if($i == $page)
        echo '[' . $i . '] '; //顯示本頁的分頁數字會以[ ]包起來            
    else if($i == $pages)
        echo '' . $i . ''; //顯示末頁的分頁數字
    else
        echo '' . $i . ','; //顯示其他的分頁數字會以" , "作區隔        
}

透過上述程式碼會藉由test.php?page='.$i.' 連結到本身php檔案
再透過第一段的PHP區塊中的get去接收 $i

若按下分頁其中一個數字,會顯示....../www1036/test.php?page=1
其中後方的 ?page=1
就是能夠刷新資料的源由

本篇資料同時刊登於 宅學習Social Learning Space網站

參考資料:
[1] MySQL 資料庫的分頁處理, 台灣PHP聯盟[ Taiwan PHP User Group ]
      http://twpug.net/modules/smartsection/item.php?itemid=42