我正在尝试为显示用户在相册中拥有的照片的页面进行简单的分页。
简单的“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
是photoalbum的ID,487
是照片的ID。
因为脚本池所有照片的ID不是各自专辑的唯一身份,所以我可以在网站上上传1000张照片,所有照片都是id为1-1000,但它们位于不同的相册中,因此照片的标识为{{ 1}}可能与ID为450
的照片位于不同的相册中。
这引发了一个问题,即我的脚本只是链接到它所在的特定照片的上一个和下一个ID。
我编辑代码以消除此错误,同时我试图找出正确的方法来做到这一点。目前,上面的代码显示了上一个和下一个ALBUM ID的链接。
例如,mysite.com / photoalbums / 500/487 /
点击下一步:mysite.com/photoalbums/500/501/ 以及之前:mysite.com/photoalbums/500/499 /
显然,不能保证在id为500的专辑中存在id为501和499的照片。所以它们是死链接。
无论如何,我试图改变NEXT变量 - 451
id,它与图像ID有关,而不是相册。
为了让我更加复杂,因为id的分配方式(对于图像,而不是专辑),id在专辑中不是按时间顺序排列的。
因此,487
ID的相册可能只包含三张照片。
他们的身份不会是1,2和3。
它们可以是任意三个数字。
有人可以指出我要改变代码的方向,这样我就可以跳到mysql中photoalbum表中的下一个现有行,而不是假定-1,+ 1分页。
谢谢!
编辑:
我在这个帖子中找到了解决方案:mysql获取上一个和下一个记录id
答案 0 :(得分:0)
查询以查找上一个和下一个照片ID号,并使用这些编号建立您的分页链接,而不是盲目地设置$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> ";