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

PHP 簡易分頁模塊實現:從 SQL LIMIT 到頁碼導航完整代碼

     編輯:PHP 相關知識

PHP 簡易分頁模塊實現:從 SQL LIMIT 到頁碼導航完整代碼

分頁是 Web 應用核心功能。本文提供一個「開箱即用」的 PHP + MySQL 分頁模塊,涵蓋總記錄數統計、總頁數計算、當前頁處理、SQL LIMIT 構建、上一頁/下一頁導航生成,代碼結構清晰,適合快速集成至中小型專案。

完整代碼 (page.php)

<?php
// 1. 資料庫配置
$localhost = "localhost";
$username = "root";
$password = "root";
$db = "test";
$pagesize = 5; // 每頁顯示條數

// 2. 連接資料庫 (建議生產環境改用 PDO/mysqli)
$conn = mysql_connect($localhost, $username, $password);
if (!$conn) {
    die("資料庫連接失敗: " . mysql_error());
}
mysql_query("SET NAMES 'UTF8'");
mysql_select_db($db);

// 3. 統計總記錄數
$total_sql = "SELECT COUNT(*) FROM page";
$total_result = mysql_query($total_sql);
$total_row = mysql_fetch_row($total_result)[0];

// 4. 計算總頁數
$total_pages = ceil($total_row / $pagesize);

// 5. 獲取當前頁碼 (預設第 1 頁)
$page = isset($_GET['p']) ? intval($_GET['p']) : 1;
$page = max(1, min($page, $total_pages)); // 邊界修正

// 6. 計算 LIMIT 偏移量
$offset = ($page - 1) * $pagesize;

// 7. 查詢當前頁數據
$sql = "SELECT * FROM page ORDER BY id LIMIT {$offset}, {$pagesize}";
$result = mysql_query($sql);

// 8. 輸出表格
echo "<p>PHP 分頁演示模塊</p>";
echo "<table border=1 cellspacing=0 width=60% align=center>";
echo "<tr><th>ID</th><th>NAME</th></tr>";
while ($row = mysql_fetch_assoc($result)) {
    echo "<tr><td>{$row['id']}</td><td>{$row['name']}</td></tr>";
}
echo "</table>";

// 9. 生成上一頁/下一頁導航
$prev_page = $page - 1;
$next_page = $page + 1;

// 邊界保護
if ($prev_page < 1) $prev_page = 1;
if ($next_page > $total_pages) $next_page = $total_pages;

echo "<h3>";
echo "<a href='page.php?p={$prev_page}'>上一頁</a> | ";
echo "<a href='page.php?p={$next_page}'>下一頁</a>";
echo "</h3>";

// 10. 釋放資源
mysql_free_result($result);
mysql_close($conn);
?>

核心邏輯解析

步驟關鍵代碼說明
總記錄數SELECT COUNT(*)避免 SELECT * 全表掃描
總頁數ceil($total / $pagesize)向上取整確保最後一頁顯示
當前頁intval($_GET['p'])強制轉整數防注入,邊界修正
偏移量($page-1) * $pagesizeMySQL LIMIT offset, rows 語法
導航連結page.php?p={$page}GET 參數傳遞頁碼,SEO 友好

進階擴展建議

  1. 數字分頁導航:輸出 1 2 3 ... 10 連結,提升跳轉效率。
  2. PDO/Prepared Statements:替換已棄用的 mysql_* 函數,防 SQL 注入。
  3. 緩存總記錄數:高並發場景用 Redis 緩存 COUNT(*) 結果。
  4. URL Rewrite:配合 Nginx/Apache 重寫為 /page/3.html 靜態化風格。
  5. 前端模板化:將分頁 HTML 抽離為獨立模板文件,便於維護。

避坑指南

  • ⚠️ mysql_* 函數自 PHP 7.0 移除,生產環境必須升級至 PDO 或 mysqli。
  • ⚠️ LIMIT offset, rows 在大偏移量 (百萬+) 時性能驟降,需採用「游標分頁」或「延遲關聯」優化。
  • ⚠️ 輸出變量到 HTML 前務必 htmlspecialchars() 防 XSS。

掌握「總數 → 總頁 → 當前頁 → 偏移量 → LIMIT → 導航」這條核心鏈路,即可靈活構建任意分頁場景。

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