MySQL находя следующий идентификатор (следующее изображение) - PullRequest
0 голосов
/ 21 февраля 2012

Я создал сайт для пользователей, чтобы загружать свои изображения.Тем не менее, я хотел бы создать кнопку следующего изображения (или кнопку предыдущего изображения).Проблема в том, как мне получить «следующий» и «предыдущий» идентификаторы?

Структура 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 ", потому что другие пользователи могут получить следующий идентификатор и т. Д. Есть ли хорошее простое решение для этого?Может быть, пример?

Я использую 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;

}

Ответы [ 3 ]

2 голосов
/ 21 февраля 2012

следующих изображений пользователя: получить все изображения с идентификатором, превышающим current_id, отсортировать ASC и взять первое (с наименьшим идентификатором, который все еще больше, чем current_id)

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

то же самое для предыдущего: получить все изображения с идентификатором, меньшим чем current_id, отсортировать DESC и взять первое:

"SELECT * FROM images WHERE user_id=? AND id<? ORDER BY id DESC LIMIT 1", 
$user_id, $current_id
1 голос
/ 21 февраля 2012

Решил в 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);
0 голосов
/ 21 февраля 2012
$query = "SELECT * FROM `images` 
         WHERE `user_id` = ".$user_id;

$result = mysql_query( $query );

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

   echo $row['id'];

}

Это вернет все идентификаторы пользователя pic

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...