PHP倒序分頁(yè)重復(fù)問題怎么解決

PHP
小億
78
2023-10-22 07:32:59

在 PHP 中,解決倒序分頁(yè)重復(fù)問題的一種常用方法是使用 SQL 語(yǔ)句的 LIMITORDER BY 子句配合使用。

假設(shè)你有一個(gè)數(shù)據(jù)庫(kù)表格 posts,其中包含了一些文章,每個(gè)文章都有一個(gè)自增的 id 字段。

要實(shí)現(xiàn)倒序分頁(yè),首先需要根據(jù) id 字段進(jìn)行倒序排序,然后使用 LIMIT 子句指定每頁(yè)顯示的記錄數(shù)和偏移量。

下面是一個(gè)示例代碼:

// 每頁(yè)顯示的記錄數(shù)
$limit = 10;

// 當(dāng)前頁(yè)碼
$page = isset($_GET['page']) ? $_GET['page'] : 1;

// 計(jì)算偏移量
$offset = ($page - 1) * $limit;

// 查詢文章數(shù)據(jù)
$query = "SELECT * FROM posts ORDER BY id DESC LIMIT $limit OFFSET $offset";
$result = mysqli_query($conn, $query);

// 輸出文章數(shù)據(jù)
while ($row = mysqli_fetch_assoc($result)) {
    // 輸出文章內(nèi)容
    echo $row['content'];
}

// 輸出分頁(yè)鏈接
$query = "SELECT COUNT(*) as total FROM posts";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_assoc($result);
$total_pages = ceil($row['total'] / $limit);

for ($i = 1; $i <= $total_pages; $i++) {
    echo "<a href='?page=$i'>$i</a> ";
}

在上面的示例代碼中,首先通過(guò) LIMITOFFSET 子句實(shí)現(xiàn)了倒序分頁(yè)查詢,然后計(jì)算總頁(yè)數(shù),并輸出了分頁(yè)鏈接。

這樣就可以實(shí)現(xiàn)倒序分頁(yè),并且避免了重復(fù)數(shù)據(jù)的問題。

0