類特性
- 四種分頁模式(數字條、首尾頁、下拉選擇、簡潔模式等)。
- 支援 AJAX 無刷新分頁(指定回調函數名)。
- 可自定義連結文本、CSS 樣式、URL 參數名。
- 同時相容 PHP 4/5(老代碼風格,現代項目建議用 PHP 7+ 類語法重寫)。
- 提供
offset() 直接用於 SQL LIMIT。
核心代碼結構
<?php
class Page {
// 公共屬性:文本、樣式、AJAX 開關
public $page_name = 'PB_page';
public $next_page = '>';
public $pre_page = '<';
public $first_page = 'First';
public $last_page = 'Last';
public $pre_bar = '<<';
public $next_bar = '>>';
public $format_left = '[';
public $format_right = ']';
public $is_ajax = false;
public $ajax_action_name = '';
// 私有屬性
private $pagebarnum = 10;
private $totalpage = 0;
private $nowindex = 1;
private $url = '';
private $offset = 0;
// 構造函數:接受陣列配置 total, perpage, nowindex, url, ajax, page_name
public function __construct($config) { ... }
// 核心方法
public function show($mode = 1) { ... } // 輸出分頁 HTML
public function offset() { return $this->offset; } // SQL LIMIT 起始
public function next_page($style='') { ... }
public function pre_page($style='') { ... }
public function first_page($style='') { ... }
public function last_page($style='') { ... }
public function nowbar($style='', $nowindex_style='') { ... } // 數字條
public function select() { ... } // 下拉選擇
// ... 私有輔助方法 _set_url, _set_nowindex, _get_url, _get_link, error ...
}
?>
使用範例
<?php
require_once 'page.class.php';
// 基本用法
$page = new Page(['total' => 1000, 'perpage' => 20]);
echo 'Mode 1: ' . $page->show(1) . '
';
echo 'Mode 2: ' . $page->show(2) . '
';
echo 'Mode 3: ' . $page->show(3) . '
';
echo 'Mode 4: ' . $page->show(4) . '
';
// AJAX 模式
$ajaxPage = new Page([
'total' => 1000,
'perpage' => 20,
'ajax' => 'ajax_page', // JS 回調函數名
'page_name' => 'test' // URL 參數名
]);
echo 'AJAX Mode 1: ' . $ajaxPage->show(1);
// 在頁面引入 JS 函數 ajax_page(url) 實現局部刷新
?>
SQL 配合
<?php
$page = new Page(['total' => $totalRows, 'perpage' => 20]);
$limit = "LIMIT {$page->offset()}, 20";
$sql = "SELECT * FROM articles ORDER BY id DESC $limit";
$result = mysql_query($sql);
// 迴圈輸出數據...
echo $page->show(1);
?>
現代化建議(PHP 7.4+)
- 使用類型聲明、標量/返回類型、嚴格模式。
- 屬性改為
private/protected,提供 getter/setter。
- 構造函數改為
__construct(array $config),移除 PHP 4 風格構造函數。
- 輸出 HTML 改用模板引擎或 heredoc,分離邏輯與視圖。
- AJAX 回調建議統一規範(如返回 JSON),前端用 fetch/axios 處理。
- 併發安全:
total 應來自 COUNT(*) 查詢,避免競態。