分頁是 Web 應用基礎功能,核心在於 LIMIT offset, count 的參數計算。本文從數學模型推導到完整代碼實現,系統講解分頁邏輯。
給定:
$pageSize:每頁記錄數(如 10)$currentPage:當前頁碼(從 1 開始)推導:
-- 第1頁: LIMIT 0, 10 -- 第2頁: LIMIT 10, 10 -- 第N頁: LIMIT ($currentPage-1)*$pageSize, $pageSize
// 1. 參數獲取與清洗
$page = isset($_GET['page']) ? max(1, intval($_GET['page'])) : 1;
$pageSize = 10;
// 2. 獲取總記錄數
$total = (int)mysql_result(mysql_query("SELECT COUNT(*) FROM `table`"), 0);
// 3. 計算總頁數
$pageCount = $total ? ceil($total / $pageSize) : 0;
// 4. 邊界修正
$page = min($page, max(1, $pageCount));
// 5. 構建導航 HTML
$nav = '';
if ($page > 1) {
$nav .= '首頁 ';
$nav .= '上一頁 ';
}
if ($page < $pageCount) {
$nav .= '下一頁 ';
$nav .= '尾頁 ';
}
$nav .= " 第 {$page}/{$pageCount} 頁 共 {$total} 條 ";
// 6. 查詢當前頁數據
$offset = ($page - 1) * $pageSize;
$sql = "SELECT * FROM `table` ORDER BY id DESC LIMIT {$offset}, {$pageSize}";
$result = mysql_query($sql);
$data = [];
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
WHERE id > last_id LIMIT N 替代 OFFSETCOUNT(*) 減輕 DB 壓力mysql_* 函數已棄用,新專案請用 mysqli 或 PDO$pageCount = 0 邊界情況intval 防注入掌握核心邏輯後,可根據業務靈活擴展 AJAX 無刷新分頁、搜尋條件保持、URL 美化等功能。