在 Web 開發中,分頁是處理大量數據展示的核心功能。本文介紹一個功能完善的 PHP 分頁類 minupage,它支援多種顯示風格、自動 URL 參數解析、AJAX 無刷新分頁,並提供靈活的配置選項,適合快速整合到各類專案中。
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(選填):每頁筆數,預設 10nowindex(選填):當前頁碼,預設自動從 $_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 參數。function loadPage(url){ ... })處理回傳資料。var 關鍵字),現代專案建議改用 public/private/protected 可視性關鍵字並搭配命名空間。minupage 是一個輕量、功能齊全的 PHP 分頁解決方案,特別適合快速開發與舊專案維護。其多模式輸出、自動 URL 解析與 AJAX 支援,能滿足大多數分頁需求。對於新專案,亦可參考其設計思路,配合現代框架(如 Laravel Paginator、Symfony Pagerfanta)進行更優雅的整合。