Php 分页-检查是否存在下一条/上一条记录

Php 分页-检查是否存在下一条/上一条记录,php,mysql,image,pagination,pdo,Php,Mysql,Image,Pagination,Pdo,我得拍张照片 > 假设实际页面是这样的:www.myWebSite.com/photo.php?id=12 如果我按下Next,那么我将重定向到www.myWebsite.com/photo.php?id=13,但是如果id=13的照片从数据库中删除,我能做什么 例如: <?php require_once '../classes/dataBaseManager/ImageDataBaseManagr.php'; if ( isset ( $_GET ['id'] ) ) { $i

我得拍张照片

>

假设实际页面是这样的:
www.myWebSite.com/photo.php?id=12

如果我按下
Next
,那么我将重定向到
www.myWebsite.com/photo.php?id=13
,但是如果id=13的照片从数据库中删除,我能做什么

例如:

<?php

require_once '../classes/dataBaseManager/ImageDataBaseManagr.php';

if ( isset ( $_GET ['id'] ) ) {
  $id = $_GET ['id'];
  /**
  * Initialize my data base class.
  */
  try {
    $dataBase = ImageDataBaseManager::connect();
    $select = $dataBase->select( array ( 'id' => $id );
    $previous = (int)($select ['id'] - 1);
    $next = (int)($select ['id'] + 1);
    $photo = $select ['path'];
    echo '<a href="http://www.myWebSite.com/photo.php?id='.$previous.'">Previous</a>';
    echo '<img src="'.$path.'" />';
    echo '<a href="http://www.myWebSite.com/photo.php?id='.$next.'">Previous</a>';
  }
  catch ( PDOException $e ) {
    error_log( $e->getMessage );
    return;
  } 
}
?>

您拥有当前页面id,并且希望获取下一个现有id。因此,构建如下查询:

SELECT id FROM `table` WHERE `id` > \"$current_id\" ORDER BY `id` ASC LIMIT 1
这应该能解决你的问题

搜索以前的照片时,请使用此查询:

SELECT id FROM `table` WHERE `id` < \"$current_id\" ORDER BY `id` DESC LIMIT 1
根据'id`DESC LIMIT 1从'table'中选择id,其中'id`<\'$current\u id\'订单

您还需要检查
mysql\u num\u rows()
是否大于0。如果是,则有下一条记录。如果否,则到达最后一个。

您具有当前页面id,并且希望获取下一个现有id。因此,请按照如下方式构造查询:

SELECT id FROM `table` WHERE `id` > \"$current_id\" ORDER BY `id` ASC LIMIT 1
这应该能解决你的问题

搜索以前的照片时,请使用此查询:

SELECT id FROM `table` WHERE `id` < \"$current_id\" ORDER BY `id` DESC LIMIT 1
根据'id`DESC LIMIT 1从'table'中选择id,其中'id`<\'$current\u id\'订单

您还需要检查
mysql\u num\u rows()
是否大于0。如果是,则有下一条记录。如果否,则您已到达最后一个。

您需要获取数据库中的最大照片数,如果已达到最大数量,则不显示
下一个
链接。

此外,您不应该使用照片的id进行分页。检查MySQL的
LIMIT
选项。

您需要获取数据库中照片的最大数量,如果达到最大数量,则不显示
next
链接。
此外,您不应该使用照片的id进行分页。检查MySQL的
限制
选项。

我认为这是实现的缺陷。 我将推荐以下查询字符串(用于下一步)


这样,您的select调用就会变成castor提到的那样,我认为这是实现的缺陷。 我将推荐以下查询字符串(用于下一步)


这样,您的select调用将类似castor所提到的,这取决于您的站点的工作方式。您想让人们知道图像已被删除吗?还是默默地跳过它?如果要跳过它,只需修改查询以获取请求的ID或下一个最高ID。事实上,如果还将方向作为变量传递,则可以保留以下查询:

假设您请求了
?ID=13&next
,我们的查询如下:

SELECT foo, bar FROM images WHERE id >= 13 ORDER BY id ASC LIMIT 1

的方向取决于你的网站如何运作。您想让人们知道图像已被删除吗?还是默默地跳过它?如果要跳过它,只需修改查询以获取请求的ID或下一个最高ID。事实上,如果还将方向作为变量传递,则可以保留以下查询:

假设您请求了
?ID=13&next
,我们的查询如下:

SELECT foo, bar FROM images WHERE id >= 13 ORDER BY id ASC LIMIT 1

的方向我在这里看不到您的查询,但在您的查询中,您将
放在。。。其中photo_id>=13按photo_id限制订购12
。这样,如果它在那里,它从13开始,否则,它从下一个最高点开始,并获取接下来的12条记录。唯一可能的顺序是按id降序?我在这里看不到您的查询,但在您的查询中,您将
。。。其中photo_id>=13按photo_id限制订购12
。这样,如果它在那里,它从13开始,否则,它从下一个最高点开始,然后抓住接下来的12条记录。唯一可能的顺序是按id降序?