2012-02-20 13 views
0

私は自分の画像をアップロードするためのサイトを作成しました。ただし、次の画像ボタン(または前の画像ボタン)を作成したいと思います。問題は、「次の」IDと「前の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`) 
) 

見ての通り、他のユーザーは次のIDなどを取得することがあるので、私は「+1」を追加することはできませんが、このために何か良い簡単な解決策はありますか?たぶん例?

私は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; 

} 
+1

ないOOPメソッドを使用して行う方法がわからしかしequivilantは次の画像のid ASC' BY 'id>の$ image_idはORDERだろう、と' ID <$ image_idはORDERのid DESC' BY用前の - ちょうどPHPでそれをドレスアップする人が必要 –

答えて

1

を返します

"SELECT * FROM images WHERE user_id=? AND id<? ORDER BY id DESC LIMIT 1", 
$user_id, $current_id 
+0

素晴らしい、ありがとう!これは多くの助けになります! – MelusDecus

2

、ユーザの画像の次の:current_idより大きいIDを持つすべての画像を取得します、idのcurrent_idより小さいすべての画像を取得するS:、ソートASCと

"SELECT * FROM images WHERE user_id=? AND id>? ORDER BY id ASC LIMIT 1", 
$user_id, $current_id 

前回のために同じことを(まだcurrent_idよりも大きい最小のIDを持つ)第一を取りますORTのDESCと最初に取る:これは自分自身の好奇心のために、ユーザーのすべてのPIC IDのGoogle CodeIgniterのことを決めた

0
$query = "SELECT * FROM `images` 
     WHERE `user_id` = ".$user_id; 

$result = mysql_query($query); 

while($row = mysql_fetch_array($result)) { 

    echo $row['id']; 

} 

を - ので、ここに私のコメントは、構文にドレスアップします:)

$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); 
関連する問題