我正在尝试为显示用户在其相册中的照片的页面进行简单的分页。
一个简单的“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/ 其中500
是487
相册的 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 变量 - 487
id,它与图像 id 相关,而不是专辑。
更让我复杂的是,由于 id 本身的分配方式(分配给图像,而不是专辑),专辑中的 id 不是按时间顺序排列的。
所以带有500
id 的相册可能只包含三张照片。他们的 id 不会是 1、2 和 3。他们可以是任意三个数字。
有人可以指出我对代码进行哪些更改的方向,这样我就可以跳到 mysql 相册表中的下一个现有行,而不是假设 -1、+1 分页。
谢谢!
编辑:
我在这个线程中找到了解决方案:mysql get previous and next record id