在PHP中實(shí)現(xiàn)分頁(yè)查詢,通常需要以下幾個(gè)步驟:
以下是一個(gè)簡(jiǎn)單的示例,展示了如何使用PHP和MySQL實(shí)現(xiàn)分頁(yè)查詢:
<?php
// 數(shù)據(jù)庫(kù)連接信息
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 創(chuàng)建連接
$conn = new mysqli($servername, $username, $password, $dbname);
// 檢查連接
if ($conn->connect_error) {
die("連接失敗: " . $conn->connect_error);
}
// 設(shè)置字符集為utf8,防止中文亂碼
$conn->set_charset("utf8");
// 當(dāng)前頁(yè)數(shù),默認(rèn)為1
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
// 每頁(yè)顯示的記錄數(shù),默認(rèn)為10
$limit = 10;
// 計(jì)算偏移量
$offset = ($page - 1) * $limit;
// 計(jì)算總記錄數(shù)
$sql_count = "SELECT COUNT(*) FROM myTable";
$result_count = $conn->query($sql_count);
$row_count = $result_count->fetch_row()[0];
// 計(jì)算總頁(yè)數(shù)
$total_pages = ceil($row_count / $limit);
// 編寫分頁(yè)查詢語(yǔ)句
$sql_page = "SELECT * FROM myTable LIMIT $offset, $limit";
$result_page = $conn->query($sql_page);
// 處理結(jié)果
if ($result_page->num_rows > 0) {
while($row = $result_page->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. "<br>";
}
} else {
echo "0 結(jié)果";
}
// 分頁(yè)導(dǎo)航
for ($i = 1; $i <= $total_pages; $i++) {
echo "<a href='?page=$i'>$i</a> ";
}
// 關(guān)閉連接
$conn->close();
?>
在這個(gè)示例中,我們首先連接到MySQL數(shù)據(jù)庫(kù),然后根據(jù)當(dāng)前頁(yè)數(shù)和每頁(yè)顯示的記錄數(shù)計(jì)算偏移量。接著,我們編寫一個(gè)SQL查詢語(yǔ)句,使用LIMIT
子句來(lái)獲取當(dāng)前頁(yè)的數(shù)據(jù)。最后,我們處理查詢結(jié)果并顯示出來(lái),同時(shí)提供一個(gè)分頁(yè)導(dǎo)航,允許用戶點(diǎn)擊頁(yè)碼來(lái)切換不同的頁(yè)面。