PHPの逆順のページングで重複を解決する方法
PHPで逆順ページングの重複解決に一般的に使用される手法は、SQLステートメントのLIMIT句とORDER BY句を組み合わせて使用することです。
投稿というデータベースのテーブルがあるとして、そこにはいくつかの記事があり、そこにはそれぞれ自己加算型の ID フィールドがあります。
ページングを逆順にするには、最初に id フィールドで逆順ソートする必要があり、その後 LIMIT 句を使用して一ページに表示されるレコード数とオフセットを指定します。
以下にサンプルコードを示します。
// 每页显示的记录数
$limit = 10;
// 当前页码
$page = isset($_GET['page']) ? $_GET['page'] : 1;
// 计算偏移量
$offset = ($page - 1) * $limit;
// 查询文章数据
$query = "SELECT * FROM posts ORDER BY id DESC LIMIT $limit OFFSET $offset";
$result = mysqli_query($conn, $query);
// 输出文章数据
while ($row = mysqli_fetch_assoc($result)) {
// 输出文章内容
echo $row['content'];
}
// 输出分页链接
$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> ";
}
上のサンプルコードでは、LIMITとOFFSET句を用いて逆順ページングクエリを実現し、総ページ数を計算し、ページングリンクを出力しています。
これにより、逆順ページングが可能になり、重複データの問題が回避されます。