-
-
//建立資料庫連線
- $link = mysql_connect("localhost", "mysql_user", "mysql_passWord ")
- or die("Could not connect: " . mysql_error());
// 取得目前頁數
- if( isset($_GET['page'] ) ){
- $page = intval( $_GET['page'] );
- }
- else{
- $page = 1;
- }
// 每頁數量
- $PageSize = 10;
// 取得總資料量
- $sql = "select count(*) as amount from table";
- $result = mysql_query($sql);
- $row = mysql_fetch_row($result);
- $amount = $row['amount'];
// 記算總共有多少頁
- if( $amount ){
- if( $amount if( $amount % $page_size ){ //取總資料量除以每頁數的餘數
- $page_count = (int)($amount / $page_size) + 1; //若有餘數,則頁數等於總資料量除以每頁數的結果取整再加一
- }else{
- $page_count = $amount / $page_size; //如果沒有餘數,則頁數等於總資料量除以每頁數的結果
- }
- }
- else{
- $page_count = 0;
- }
// 翻頁連結
- $page_string = '' ;
- if( $page == 1 ){
- $page_string .= '第一頁|上一頁|';
- }
- else{
- $page_string .= '第一頁|上一頁|';
- }
if( ($page == $page_count) || ($page_count == 0) ){
- $page_string .= '下一頁|尾頁';
- }
- else{
- $page_string .= '下一頁|尾頁';
- }
// 取得數據,以二維數組格式傳回結果
- if( $amount ){
- $sql = "select * from table order by id desc limit ". ($page-1)*$page_size .", $page_size";
- $result = mysql_query($sql);
- while ( $row = my_fetch_row(sql);
- while ( $row = my_fetch_row(sql_fetch_row( $result) ){
- $rowset[] = $row;
- }
- }else{
- $rowset = array();
- }
- // 沒有包含顯示結果的程式碼,那不在討論範圍,只要用foreach就可以很簡單的用得到的二維數組來顯示結果
- ?>
複製程式碼 4、OO風格代碼
以下程式碼中的資料庫連線是使用的pear db類別進行處理
複製程式碼
#------------------------
-
-
// FileName: test_pager.php
- // 這是一段簡單的範例程式碼,前邊省略了使用pear db類別建立資料庫連線的程式碼
- require "Pager.class.php";
if ( isset($_GET['page']) )
- {
- $page = (int)$_GET['page'];
- }
- else
- {
- $page = 1;
- }
- $sql = "select * from table order by id";
- $pager_option = array(
- "sql" => $sql,
- "PageSize" => 10,
- "CurrentPageID" => $page
- );
if ( isset($_GET['numItems']) )
- {
- $pager_option['numItems'] = (int) $_GET['numItems'];
- }
$pager = @new Pager($pager_option);
- $data = $pager->getPageData();
if ( $pager->isFirstPage )
- {
- $turnover = "首頁|上一頁|";
- }
- else
- {
- $ turnover = "首頁|上一頁|";
- }
if ( $pager->isLastPage )
- {
- $ turnover .= "下一頁|尾頁";
- }
- else
- {
- $turnover .="下一頁|尾頁";
- }
- ?>
-
複製程式碼
說明:
這個類別只是處理數據,並不負責處理顯示,因為我覺得將數據的處理和結果的顯示都放到一個類別裡邊實在是有些勉強。顯示的時候情況和要求多變,不如自己根據類別給出的結果處理,更好的方法是根據這個Pager類別繼承一個自己的子類別來顯示不同的分頁,例如顯示使用者分頁清單可以:
-
-
class MemberPager extends Pager
- {
- function showPager extends Pager
- {
- function showPager()
- global $db;
- $data = $this->getPageData();
- // 顯示結果的程式碼
- // ......
- }
- } p>
/// 呼叫
- if ( isset($_GET['page']) )
- {
- $page = (int)$_GET['page'];
- }
- else
- {
- $page = 1;
- }
$sql = "select * from members order by id";
- $ pager_option = array(
- "sql" => $sql,
- "PageSize" => 10,
- "CurrentPageID" => $page
- );
if ( isset($_GET['numItems']) )
- {
- $pager_option['numItems'] = (int)$_GET['numItems'];
- }
- $pager = @ 。第二個需要說明的地方就是不同資料庫的兼容性,在不同的資料庫裡截獲一段結果的寫法是不一樣的。
mysql: select * from table limit offset, rows
pgsql: select * from table limit m offset n
....
-
- 所以,要在類別裡邊取得結果時,需要使用pear db類別的limitQuery方法。
|