Web Design Laboratory
分頁 功能在網站中非常常見,尤其當資料量龐大的時候,分頁能讓使用者更方便地瀏覽內容。PHP 結合 MySQL 就能輕鬆實現分頁功能。
計算總記錄數: 首先查詢資料庫,取得總共的記錄數。
設定每頁顯示的記錄數: 決定每一頁要顯示多少條記錄。
計算總頁數: 將總記錄數除以每頁顯示的記錄數,得到總頁數。
根據當前頁數計算起始記錄: 利用當前頁數和每頁顯示的記錄數,計算出 SQL 查詢的起始位置。
執行 SQL 查詢: 使用 LIMIT 子句限制查詢結果的數量。
顯示分頁連結: 生成上一頁、下一頁、以及各頁的連結。
PHP 實現分頁
<?php
// 假設已建立資料庫連線 $conn
// 每頁顯示的記錄數
$records_per_page = 10;
// 取得當前頁數 (若沒有傳遞,則設為 1)
$page = isset($_GET['page']) ? $_GET['page'] : 1;
// 計算起始記錄
$start_from = ($page-1) * $records_per_page;
// 查詢總記錄數
$result = $conn->query("SELECT COUNT(*) AS total_records FROM your_table");
$row = $result->fetch_assoc();
$total_records = $row['total_records'];
// 計算總頁數
$total_pages = ceil($total_records / $records_per_page);
// 執行分頁查詢
$sql = "SELECT * FROM your_table LIMIT $start_from, $records_per_page";
$result = $conn->query($sql);
// 顯示查詢結果 (這裡用迴圈遍歷並顯示每一行資料)
while($row = $result->fetch_assoc()) {
echo $row["column1"] . " " . $row["column2"] . "<br>";
}
// 顯示分頁連結
echo "<a href='?page=1'>第一頁</a> ";
for ($i=1; $i<=$total_pages; $i++) {
echo "<a href='?page=$i'>$i</a> ";
}
echo "<a href='?page=$total_pages'>最後一頁</a>";
?>
LIMIT 子句: LIMIT $start_from, $records_per_page 這部分用於限制查詢的起始位置和返回的記錄數。
URL 傳參: 透過 URL 的 ?page= 參數來傳遞當前頁數,方便使用者點選不同頁面。
安全性: 確保對 $_GET['page'] 進行過濾,防止 SQL 注入攻擊。
使用者體驗: 可以加入上一頁、下一頁、以及快速跳轉到特定頁面的連結。
美化: 可以使用 CSS 或 JavaScript 來美化分頁的顯示效果。