我的项目有用户帐户,其中有属于每个上传照片的用户的照片
我想为每个用户显示下一张和上一张照片,所以当我转到照片的朋友列表时,我可以(显然)导航到用户下一张上传的照片。如果这些是photo_id顺序中的下一张/上一张照片,我会很好。
你会如何为下一张/上一张照片写这样的查询?
我的表格结构是这样的。
CREATE TABLE IF NOT EXISTS `userphotos` (
`photo_id` int(11) NOT NULL auto_increment,
`photo_ownerid` int(11) NOT NULL,
`photo_ispublic` int(11) NOT NULL,
`photo_name` varchar(100) NOT NULL,
`photo_caption` varchar(100) NOT NULL,
`photo_imagedata` longblob NOT NULL,
`album_id` int(11) NOT NULL,
PRIMARY KEY (`photo_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=89 ;
我会用这样的东西来选择id的吗
以前的图像
SELECT field1 FROM tablename WHERE id < $currentid ORDER BY id DESC LIMIT 1
下一个图像
SELECT field1 FROM tablename WHERE ID > $currentid ORDER BY id ASC LIMIT 1
这些查询应该能满足您想要完成的任务。不过,您也应该添加所有者id,以将浏览的照片限制为用户所有的照片。
上一张图像
SELECT field1 FROM tablename
WHERE id < $currentId AND photo_ownerid = $ownerId
ORDER BY id DESC LIMIT 1
下一张图像
SELECT field1 FROM tablename
WHERE ID > $currentId AND photo_ownerid = $ownerId
ORDER BY id ASC LIMIT 1
然而,正如对该问题的评论中所暗示的那样,与每次查看下一张/上一张照片时查询数据库相比,还有更有效的选择。例如,您可以一次查询所有照片,然后使用javascript库,例如PrettyPhoto,来整齐地组织和浏览照片。