首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 經典分頁類實現詳解與多種顯示模式

     編輯:PHP 相關知識

前言

在 Web 開發中,分頁是處理大量數據展示的核心功能。本文介紹一個功能完善的 PHP 分頁類 minupage,它支援多種顯示風格、自動 URL 參數解析、AJAX 無刷新分頁,並提供靈活的配置選項,適合快速整合到各類專案中。

核心功能特性

  • 多樣化顯示模式:內建 5 種預設風格(如「11/20 頁次 共 400 條記錄 20 條/頁 上一頁 11 12 13 14 15 下一頁」等),可依需求切換。
  • 自動 URL 處理:自動偵測當前請求 URI 與查詢字串,智慧組合分頁連結,亦支援手動指定 URL 前綴。
  • 頁碼導航控制:提供首頁、尾頁、上一頁、下一頁、頁碼條、下拉選單跳轉等導航元素。
  • AJAX 模式支援:啟用 AJAX 後,分頁連結改為呼叫指定 JavaScript 函式,實現無刷新載入。
  • 資料庫查詢輔助:內建 offset() 方法直接回傳 MySQL LIMIT 所需的偏移量,並提供 sumpage() 靜態方法計算總頁數。

類結構與關鍵屬性

class minupage {
    // 公有配置屬性
    var $page_name = 'p';        // URL 參數名,如 ?p=2
    var $next_page = '>';      // 下一頁符號
    var $pre_page = '<';       // 上一頁符號
    var $first_page = 'first';   // 首頁文字
    var $last_page = 'last';     // 尾頁文字
    var $pre_bar = '<<';      // 上一頁碼區塊
    var $next_bar = '>>';     // 下一頁碼區塊
    var $format_left = '';       // 頁碼左側裝飾
    var $format_right = '';      // 頁碼右側裝飾
    var $is_ajax = false;        // 是否啟用 AJAX 模式

    // 私有屬性
    var $pagebarnum = 10;        // 頁碼條顯示數量
    var $totalpage = 0;          // 總頁數
    var $ajax_action_name = '';  // AJAX 回呼函式名
    var $nowindex = 1;           // 當前頁碼
    var $url = '';               // 組合後的 URL 前綴
    var $offset = 0;             // 資料庫查詢偏移量
    // ... 建構子與方法省略 ...
}

建構子參數說明

建構子接受陣列或單一總筆數:

  • total(必填):總記錄數
  • perpage(選填):每頁筆數,預設 10
  • nowindex(選填):當前頁碼,預設自動從 $_GET[$page_name] 取得
  • url(選填):自訂 URL 前綴,預設自動偵測
  • page_name(選填):覆蓋預設分頁參數名
  • ajax(選填):啟用 AJAX 模式並指定回呼函式名

常用方法速查

方法說明
show($mode=1, $url='')輸出完整分頁 HTML,$mode 1~5 對應不同風格
first_page($style)首頁連結
pre_page($style)上一頁連結
next_page($style)下一頁連結
last_page($style)尾頁連結
nowbar($style, $nowindex_style)頁碼條(如 11 12 13 14 15)
select($url)下拉選單跳轉
offset()回傳 SQL LIMIT 偏移量

使用範例

<?php
require_once 'page.class.php';

// 基本用法
$total = 1000;          // 總筆數
$perpage = 20;          // 每頁 20 筆
$page = new minupage(array('total' => $total, 'perpage' => $perpage));

// 取得資料庫查詢所需參數
$offset = $page->offset();   // LIMIT 偏移量
$limit  = $perpage;          // LIMIT 筆數

// 輸出分頁導航(模式 4:上一頁 頁碼條 下一頁)
echo $page->show(4);

// AJAX 模式範例
$ajaxPage = new minupage(array(
    'total' => 1000,
    'perpage' => 20,
    'ajax' => 'loadPage',   // JS 回呼函式名
    'page_name' => 'page'
));
echo $ajaxPage->show(1);
?>

進階客製化

透過 set($var, $value) 方法可動態調整屬性,例如更改頁碼裝飾:

$page->set('format_left', '<span class="page-num">');
$page->set('format_right', '</span>');

亦可繼承類別並覆寫 show() 方法,實作完全自訂的輸出邏輯。

注意事項

  • 類別使用 $_SERVER['REQUEST_URI'] 與 $_SERVER['QUERY_STRING'] 自動解析 URL,若在特殊路由環境下(如 URL Rewrite),建議手動傳入 url 參數。
  • AJAX 模式下,前端需定義對應的 JavaScript 函式(如 function loadPage(url){ ... })處理回傳資料。
  • 本類別基於 PHP 4/5 風格撰寫(使用 var 關鍵字),現代專案建議改用 public/private/protected 可視性關鍵字並搭配命名空間。

總結

minupage 是一個輕量、功能齊全的 PHP 分頁解決方案,特別適合快速開發與舊專案維護。其多模式輸出、自動 URL 解析與 AJAX 支援,能滿足大多數分頁需求。對於新專案,亦可參考其設計思路,配合現代框架(如 Laravel Paginator、Symfony Pagerfanta)進行更優雅的整合。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved