2012-02-20 77 views
0

我创建了一个网站供用户上传他们的图片。但是,我想创建一个下一个图像按钮(或上一个图像按钮)。问题是,我怎样才能得到“下一个”和“前一个”的ID?MySQL查找下一个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等对此有什么好的简单的解决方案?也许是一个例子?

我使用笨,这是我怎么拉出来的数据和观点的单个图像

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; 

} 
+1

不知道该怎么办使用OOP方法,但equivilant会'WHERE ID> $ image_id ORDER BY ID ASC'下一个图像,和'WHERE ID <$ image_id ORDER BY ID DESC'为以前 - 只需要有人打扮在PHP – 2012-02-20 22:44:57

回答

1

决定将谷歌的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); 
+0

太好了,谢谢!这帮助了很多! – MelusDecus 2012-02-21 08:29:25

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,S ORT DESC并采取第一:

"SELECT * FROM images WHERE user_id=? AND id<? ORDER BY id DESC LIMIT 1", 
$user_id, $current_id 
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

相关问题