2012-02-20 31 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