-
-
// 建立資料庫連線
- $link = mysql_connect("localhost", "mysql_user", "mysql_Word ")
- 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 = mysql_fetch_row($result) ){
- $rowset[] = $row;
- }
- }else{
- $rowset = array();
- }
- / / 沒有包含顯示結果的程式碼,那不在討論範圍,只要用foreach就可以很簡單的用得到的二維數組來顯示結果
- ?>
-
複製程式碼
4、OO風格程式碼
資料庫連線使用pear db類別進行處理。
說明兩點:
這個類別只是處理數據,並不負責處理顯示,因為我覺得將數據的處理和結果的顯示都放到一個類別裡邊實在是有些勉強。
顯示的時候情況和要求多變,不如自己根據類別給出的結果處理,更好的方法是根據這個Pager類別繼承一個自己的子類別來顯示不同的分頁,例如顯示使用者分頁列表:
-
-
Class MemberPager extends Pager
- {
- function showPager extends Pager
- {
- function showPager()
- global $db;
$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方法。 |