【问题标题】:How to build next and previous links with php?如何使用 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
  • 我在这个版本中遇到了同样的问题

标签: php mysql hyperlink


【解决方案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 从数据库中获取所有记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      • 1970-01-01
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      • 2016-08-18
      • 1970-01-01
      相关资源
      最近更新 更多