我为用户创建了一个上传图片的网站。但是,我想创建一个下一个图像按钮(或上一个图像按钮)。问题是,如何获得“下一个”和“上一个”ID?
SQL结构如下所示,
CREATE TABLE IF NOT EXISTS `images` (
`id` int(9) NOT NULL AUTO_INCREMENT,
`user_id` int(9) NOT NULL,
`url` varchar(450) NOT NULL,
`upload_time` int(9) NOT NULL,
`upload_ip` varchar(250) NOT NULL,
`warnings` int(9) NOT NULL,
`deleted` int(9) NOT NULL,
PRIMARY KEY (`id`)
)
如您所见,我不能只添加“+1”,因为其他用户可能会获得下一个ID等。这有什么好的简单解决方案吗?也许是一个例子?
我正在使用codeigniter,这就是我提取数据和查看单个图像的方式
PHP
// Get current image by id
function get_single_image($user_id, $image_id)
{
$this->db->where('id', $image_id);
$this->db->where('user_id', $user_id);
$this->db->where('deleted', '0');
$query = $this->db->get('images');
if($query->num_rows() > 0)
{
$query = $query->result_array();
return $query[0];
}
return false;
}
答案 0 :(得分:2)
用户图像的下一个:获取id大于current_id的所有图像,对ASC进行排序并取第一个(具有仍然大于current_id的最低id)
"SELECT * FROM images WHERE user_id=? AND id>? ORDER BY id ASC LIMIT 1",
$user_id, $current_id
与之前相同:获取id小于current_id的所有图像,排序DESC并取第一个:
"SELECT * FROM images WHERE user_id=? AND id<? ORDER BY id DESC LIMIT 1",
$user_id, $current_id
答案 1 :(得分:1)
由于好奇心,我自己决定使用Google CodeIgniter - 所以这里的评论是用语法编写的:)
选择下一张图片
$this->db->where('id >',$image_id);
$this->db->order_by('id','asc');
$this->db->limit(1);
选择上一张图片
$this->db->where('id <',$image_id);
$this->db->order_by('id','desc');
$this->db->limit(1);
答案 2 :(得分:0)
$query = "SELECT * FROM `images`
WHERE `user_id` = ".$user_id;
$result = mysql_query( $query );
while( $row = mysql_fetch_array( $result ) ) {
echo $row['id'];
}
这将返回所有用户pic id's