0

这篇文章已关闭,但我想我可以通过一些简单的分页来分享我解决这个问题的方法。

我将在此处显示的内容将完整发布,以便其他人更容易使用它,如果他们卡在与我相同的部分。

我在这里使用的是数据库中的 id 来获取我的帖子,你可以使用 title 之类的,我也对其进行排序以首先显示第一个帖子。如果您想显示最后一个,只需将底部的 ASC 更改为 DESC。

<?PHP
//Connect to the database
//Add your file here

//Get a record count of our database for pagination
$record_count = $db->query("SELECT * FROM posts");
//Number of posts displayed
$per_page = 2;
//Number of pages
$pages = ceil($record_count->num_rows/$per_page);
//Get page number
if(isset($_GET['p']) && is_numeric($_GET['p'])) {
$page = $_GET['p'];
}else{
$page = 1;
}
if($page<=0)
$start = 0;
else
//Make the controls to switch pages
$start = $page * $per_page - $per_page;
$prev = $page - 1;
$next = $page + 1;
//Display the blog posts on the page
$query = $db->prepare("SELECT post_id, title, LEFT(message, 100) AS message, posted FROM posts ORDER BY post_id ASC LIMIT $start, $per_page");
$query->execute();
$query->bind_result($post_id, $title, $message, $posted);
?>

然后无论你喜欢什么 html 代码,divs,p 和什么不是,最后我只是将它们呼应出来,这里缺少一些代码,但这只是我自己的代码,用于显示我自己的博客文章及其变量。要在底部获取下一个和上一个链接,请使用:

 <?PHP
            if($prev > 0) {
                echo "<a href='index.php?p=$prev'>Prev</a>";
            }
            if($page < $pages) {
                echo "<a href='index.php?p=$next'>Next</a>";
            }
        ?>
4

1 回答 1

2

假设您的id字段是您的主数字键,而不是执行id++id--获取下一个/上一个项目,只需使用当前 id 作为参考。这将阻止您访问id实际上不存在的 's。

当前项目的 SQL -

SELECT * FROM blogposts WHERE id = '$id'

一项的 SQL -

SELECT * FROM blogposts WHERE id > '$id' ORDER BY id ASC LIMIT 1

一项的 SQL -

SELECT * FROM blogposts WHERE id < '$id' ORDER BY id ASC LIMIT 1

如果您在最后一项/第一项,并且您请求上一个/下一项,这些查询将返回空结果,因为没有id小于1或大于最大的项id

请注意,我使用LIMIT关键字来确保我只得到一件物品作为回报;具有更大或更小id价值的项目。查询已经按id字段排序,因此我们将从表中获取顺序项。

于 2013-01-06T17:06:40.983 回答