如何使用 php 建立下一个和上一个链接?

Posted

技术标签:

【中文标题】如何使用 php 建立下一个和上一个链接?【英文标题】:How to build next and previous links with php? 【发布时间】:2011-10-14 04:41:13 【问题描述】:

我使用此代码获取有关某个 id 的信息

$sql = dbquery("SELECT * FROM `videos` WHERE `id` = ".$local_id." ");

while($row = mysql_fetch_array($sql))
    $video_id = $row["id"];
    $video_title = $row["title"];

假设页面的链接是 example.com/video.php?id=34

如何根据当前 id 获取下一个和上一个 $video_id 和 $video_title?

一个问题是我不能将当前id的值增加或减少1,因为35或33可能同时被删除......

我怎样才能做到这一点?

//编辑

我有一个非常大的问题:上一个链接将我发送到正确的链接,但下一个链接总是将我发送到数据库中添加的最后一个视频。

如果我转到数据库中添加的最后一个或第一个视频,我会收到错误消息,因为没有添加更多的下一个和上一个视频。

【问题讨论】:

如果你不能做id-1或id+1,那我们怎么知道上一个/下一个视频呢?有日期顺序之类的吗?如果是,您(可以)尝试选择日期此视频中的日期,然后设置 LIMIT 1。只是一个想法。 假设您应该使用“SELECT id FROM Videos WHERE id > ".intval($id)." ORDER BY id ASC LIMIT 1 获取下一个 id,并且使用“SELECT id FROM Videos WHERE id”获取上一个 id 我在这个版本中遇到了同样的问题 【参考方案1】:

也许另外两个查询会起作用......

 select id,title from videos where id < $local_id order by id desc limit 1
 select id,title from videos where id > $local_id order by id asc limit 1

【讨论】:

您好 m3tsys,关于下一个总是将您发送到最后一个,请确保您使用 'asc' 作为订单 ID,如果已经开始或已经结束,您可以使用 mysql_num_rows () 让您知道是否返回任何内容,如果返回 0 行,则从 db 中获取第一个或最后一个 id 谢谢,不使用“ASC”导致数据库中最后一个条目出现问题。我会尝试使用 mysql_num_rows() 看看它是否有效。 我使用了 mysql_num_rows(),现在我不再有错误了。谢谢!【参考方案2】:

您必须使用 selectlimit 来获得您想要的那一行,即,

SELECT * FROM `videos` WHERE `id` < " . $local_id . " ORDER BY `id` DESC LIMIT 1

或者使用&gt;ORDER BYidASC作为next视频,而不是我上面显示的previous

【讨论】:

【参考方案3】:

到此为止

// entry per page
$rowsPerPage = 3;

// Set page number
if(isset($_GET['page']))
    $pageNum = $_GET['page'];
else
    $pageNum = 1;

注意:以下代码用于显示/设置下一页和上一页页码。

注意:如果当前页面是主页,则默认 $pageNum 为 1 并且 如果 $pageNum 设置为 2,它将作为

if($pageNum)

    $PreviousPageNumber = $pageNum - 1;
    $NextPageNumber = $pageNum + 1;

    echo '<a href="?page='. $PreviousPageNumber .'>Previous Page</a>';
    echo '<a href="?page='. $NextPageNumber .'>Next Page</a>";

注意:以下代码用于显示受页码影响的记录

$GetPreviousRecord = ($pageNum - 1) * $rowsPerPage;

注意:LIMIT 的第一个可选值是起始位置。笔记: 第二个需要的值是要检索的行数。

$query = "SELECT * FROM post WHERE LIMIT $GetPreviousRecord, $rowsPerPage";
$result = mysql_query($query);

最后使用 WHILE 循环使用 LIMIT 从数据库中获取所有记录。

【讨论】:

以上是关于如何使用 php 建立下一个和上一个链接?的主要内容,如果未能解决你的问题,请参考以下文章

php 下一个和上一个帖子链接

php 下一个和上一个帖子链接

PHP 下一个和上一个链接/限制结果

如何创建正确的 NEXT 和 PREV 按钮以在 Django 中检索下一个和上一个对象

jQuery 选择下一个和上一个 img

使用php的下一个和上一个按钮[重复]