140 / 96 / 47
Регистрация: 03.08.2013
Сообщений: 765
1

Выбрать следующую и предыдущую куртинку из БД

26.09.2016, 23:32. Показов 682. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if(!empty($query_user_id) AND empty($fixed_tags)){
            $QUERY_IMAGES = "SELECT *
                FROM images im 
                INNER JOIN image_tags t ON im.id = t.image_id
                INNER JOIN tags tag ON tag.id = t.tag_id
                WHERE im.owner_id = '{$query_user_id}'
                group by im.id ORDER BY im.id DESC LIMIT $images_count_per_page OFFSET $images_offset";
        }elseif(empty($query_user_id) AND !empty($fixed_tags)){
            $QUERY_IMAGES = "SELECT *
                FROM images im 
                INNER JOIN image_tags t ON im.id = t.image_id
                INNER JOIN tags tag ON tag.id = t.tag_id
                WHERE tag.tag IN ('".implode("', '", $fixed_tags)."')
                group by im.id
                having count(*) = ".count($fixed_tags)." ORDER BY im.id DESC LIMIT $images_count_per_page OFFSET $images_offset";
        }else{
            $QUERY_IMAGES = "SELECT *
                FROM images im 
                INNER JOIN image_tags t ON im.id = t.image_id
                INNER JOIN tags tag ON tag.id = t.tag_id
                WHERE tag.tag IN ('".implode("', '", $fixed_tags)."') AND im.owner_id = '{$query_user_id}'
                group by im.id
                having count(*) = ".count($fixed_tags)." ORDER BY im.id DESC LIMIT $images_count_per_page OFFSET $images_offset";
        }
Как для каждого запроса выбрать следующее и предыдущее (по im.id) ID картинки?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2016, 23:32
Ответы с готовыми решениями:

Переход на следующую/предыдущую запись бд
Доброго времени суток! Столкнулся с такой проблемой: есть некая таблица с полями name, surname,...

Вывести следующую и предыдущую цифры
В символьную переменную вводится цифра. Вывести следующую и предыдущую цифры, считая, что за 9...

Особенные даты, определить следующую и предыдущую дату
Всем Hello, осуществил данный алгоритм, но вот не задача особенную дату вывести правильно никак не...

Навигация переход на предыдущую и следующую страницу в выпадающем меню
Проблема такая: есть выпадающий список <SELECT NAME="navSelect" ONCHANGE="top.location.href =...

6
87 / 87 / 41
Регистрация: 09.05.2015
Сообщений: 315
27.09.2016, 01:55 2
Получайте на 2 строки больше, сместите на -1 изначальную позицию. Первая и последняя будут нужными. Или отдельным запросом.
1
140 / 96 / 47
Регистрация: 03.08.2013
Сообщений: 765
27.09.2016, 12:49  [ТС] 3
rikitikitari, А можете запрос составить? А то я не доконца Вас понимаю. (im.id > ($id - 1)) не будет правильно работать.
0
87 / 87 / 41
Регистрация: 09.05.2015
Сообщений: 315
27.09.2016, 15:16 4
Как сейчас, например.
SQL
1
mysql> SELECT * FROM TABLE LIMIT 5,10; # возвращает строки 6-15
А как нужно:
SQL
1
mysql> SELECT * FROM TABLE LIMIT 4,12; # возвращает строки 5-16
Я с offset не работал, не знаю также ли он ведет себя, как limit без него - мне кажется неправильно написал, наоборот нужно было.
PHP
1
" ORDER BY im.id DESC LIMIT " . ($images_count_per_page - 1) . " OFFSET " . ($images_offset+2)
Для получения первого и последнего элемента массива array_shift() и array_pop()

Добавлено через 6 минут
Похоже, что так
PHP
1
" ORDER BY im.id DESC LIMIT " . ($images_count_per_page + 2) . " OFFSET " . ($images_offset-1);
1
140 / 96 / 47
Регистрация: 03.08.2013
Сообщений: 765
28.09.2016, 09:40  [ТС] 5
rikitikitari, Все хорошо, но на этой странице у меня есть только ID текущей картинки..

Добавлено через 15 часов 37 минут
Ах да, еще и список тегов есть.
0
87 / 87 / 41
Регистрация: 09.05.2015
Сообщений: 315
28.09.2016, 13:14 6
Ничего не понятно, получили из БД images, взяли первую и последнюю. Нормально описывайте проблему, тут никто уже не поможет
0
140 / 96 / 47
Регистрация: 03.08.2013
Сообщений: 765
28.09.2016, 14:46  [ТС] 7
Ладно. Есть запрос:
SQL
1
2
3
4
5
6
SELECT *
                FROM images im 
                INNER JOIN image_tags t ON im.id = t.image_id
                INNER JOIN tags tag ON tag.id = t.tag_id
                WHERE im.owner_id = '{$query_user_id}'
                GROUP BY im.id ORDER BY im.id DESC LIMIT $images_count_per_page OFFSET $images_offset"
Нужно получить предыдущую и следующую картинку (и только их) одним или двумя запросами. Из данных у меня есть только список тегов, owner_id и image_id. Запрос выше берет все картинки с оффсетом по данным параметрам. Как переделать его? Цель запроса: следать кнопки prev|next на страничке просмотра картинок.
0
28.09.2016, 14:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.09.2016, 14:46
Помогаю со студенческими работами здесь

Переход по кнопкам на предыдущую или следующую фото в PictureBox'e
Задав местоположение фото переход при нажатии кнопок ! Windows Forms ! Например ...

Объекты браузера: вывод на экран данных из формы, переход на предыдущую или следующую страницы
Создать сайт по теме курсовой работы. Создать форму. После опроса пользователю открывается новое...

TabControl как выбрать следующую вкладку
При закрытии выбранной вкладки необходимо выбрать ту, которая находится справа от закрываемой...

Toggly скрывает/раскрывает div, но если не скрыть его а выбрать следующую ссылку
toggly скрывает/раскрывает div, но если не скрыть его а выбрать следующую ссылку div открывается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru