0

我正在尝试为显示用户在其相册中的照片的页面进行简单的分页。

一个简单的“PREV - NEXT”。

到目前为止,这是我的代码:

$query = "SELECT count(id) FROM pins WHERE board_id='$boardDetails->id'";
$result = mysql_query($query) or trigger_error("SQL", E_USER_ERROR);
$query_data = mysql_fetch_row($result);
$numrows = $query_data[0];

$rows_per_page = 1;
$lastpage      = ceil($numrows/$rows_per_page);

$pageno = (int)$pageno;
if ($pageno > $lastpage) {
   $pageno = $lastpage;
} // if
if ($pageno < 1) {
   $pageno = $boardDetails->id;
} // if

$limit = 'LIMIT ' .($pageno - 1) * $rows_per_page .',' .$rows_per_page;

$query = "SELECT * FROM pins $limit";
$result = mysql_query($query) or trigger_error("SQL", E_USER_ERROR);


if ($pageno == 1) {
   echo " FIRST PREV ";
} else {
   $prevpage = $pageno-1;

   echo "$lastpage posts in this collection.<br>";
   echo " <a href='/board/pins/$boardDetails->id/$prevpage'>PREV</a> ";
} // if


if ($pageno == $lastpage) {
   echo " NEXT LAST ";
} else {
   $nextpage = $pageno+1;
   echo " <a href='/board/pins/$boardDetails->id/$nextpage'>NEXT</a> ";
} // if

这给了我 PREV - NEXT 链接,但它提供的数字是错误的。

例如,

照片页面位于 mysite.com/photoablums/500/487/ 其中500487相册的 ID,是照片的 ID。

因为脚本池所有照片 id 不是他们各自的相册唯一的,所以我可以在网站上上传 1000 张照片,所有照片的 id 都是 1-1000,但它们在不同的相册中,所以带有 id 的照片450可能在不同的相册比带有 id 的照片451。这引发了一个问题,即我的脚本只是链接到它所在的特定照片的上一个和下一个 id。当我试图找出正确的方法时,我编辑了代码以消除此错误。目前,上面的代码显示了指向上一个和下一个 ALBUM id 的链接。

例如,mysite.com/photoalbums/500/487/

单击下一步将转到:mysite.com/photoalbums/500/501/ 和上一个到:mysite.com/photoalbums/500/499/

显然,不能保证id为500的相册中存在id为501和499的照片。所以它们是死链接。在任何情况下,我都在尝试更改 NEXT 变量 - 487id,它与图像 id 相关,而不是专辑。

更让我复杂的是,由于 id 本身的分配方式(分配给图像,而不是专辑),专辑中的 id 不是按时间顺序排列的。

所以带有500id 的相册可能只包含三张照片。他们的 id 不会是 1、2 和 3。他们可以是任意三个数字。

有人可以指出我对代码进行哪些更改的方向,这样我就可以跳到 mysql 相册表中的下一个现有行,而不是假设 -1、+1 分页。

谢谢!

编辑:

我在这个线程中找到了解决方案:mysql get previous and next record id

4

1 回答 1

0

查询查找上一张和下一张照片的身份证号码,并使用这些号码建立您的分页链接,而不是盲目设置$nextpage$prevpage

假设当前照片存储在 $current_photo_id 中:

$next_photo_query = "SELECT count(id) FROM photos WHERE photo_id > '$current_photo_id' LIMIT 1";
$prev_photo_query = "SELECT count(id) FROM photos WHERE photo_id < '$current_photo_id' LIMIT 1";

// next button
$result = mysql_query($next_photo_query);
$next_btn = " <a href='/board/pins/$boardDetails->id/$result->id'>NEXT</a> ";

// prev button
$result = mysql_query($prev_photo_query);
$prev_btn = " <a href='/board/pins/$boardDetails->id/$result->id'>PREV</a> ";
于 2013-05-28T22:08:12.383 回答