-
-
// 建立資料庫連線
- $link = mysql_connect("localhost", "mysql_user", "mysql_pass"," ")
- 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;
- } p>
// 翻頁連結
- $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 = mysql_fetch_row($result) ){
- $rowset[] = $row;
- }
- }else{ $rowset = array();
- }
- // 沒有包含顯示結果的程式碼,那不在討論範圍,只要用foreach就可以很簡單的用得到的二維數組來顯示結果
- ? >
-
複製程式碼
4、OO風格分頁代碼
以下資料庫連線是使用的pear db類別進行處理的。
2,測試php分頁程式碼
-
-
// 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 = "首頁|上一頁|";
- }
- $turnover = "首頁|上一頁|";
- }
- else
- {
- $turnover = "首頁|PreviousPageID."&numItems=".$pager->numItems."'>上一頁|";
- }
- if ( $pager->isLastPage )
- {
- $turnover .= "下一頁|尾頁";
- }
- else
- {
- $turnover .= " NextPageID."&numItems=".$pager->numItems."'>下一頁|numPages."&numItems=".$pager-> numItems."'>尾頁";
} ?>
複製程式碼
說明:
這個類別只是處理數據,並不負責處理顯示,因為將數據的處理和結果的顯示都放到一個類別裡邊實在是有些勉強。
顯示情況和要求多變,不如自己根據類別給出的結果處理,根據這個Pager類別繼承一個自己的子類別來顯示不同的分頁,例如顯示使用者分頁列表可以:
-
-
-
-
Class MemberPager extends Pager
- {
- function showMemberList()
- {
-
- $data = $this->getPageData();
- // 顯示結果的程式碼
- // ......
- }
- }
- // / 呼叫
- 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 = @new MemberPager($pager_option);
- $pager->showMemberList();
?>
複製程式碼
第二個不同資料庫的相容性,在不同的資料庫裡截獲一段結果的寫法是不一樣的。
mysql: select * from table limit offset, rows
pgsql: select * from table limit m offset n
.....
在類別裡邊取得結果時需要使用pear db類別的limitQuery方法。 |