09:42

MySQL offset

alhames.ru
Часто сталкиваюсь с такой задачей:
есть таблица, например новостей:
id | title | text | date

Есть постраничный вывод:
+ страница 1
- - новсть #34
- - новсть #53
+ страница 2
- - новсть #23
- - новсть #66

Необходимо зная id новости определить на какой странице она находится. Как это сделать максимально просто?

@темы: MySQL

Комментарии
02.01.2012 в 11:31

Хм, а как вообще определяется какая новость выводится на странице 1 или 2?
02.01.2012 в 11:49

alhames.ru
SELECT *
FROM `news`
ORDER BY `date` DESC
LIMIT 0, 2

Соответственно меняем лимит - выводятся разные страницы.
Поясню для чего это может быть нужно: когда мы заходим внутрь новости, там есть кнопочка "весь список", по клике на которую открывается первая страница списка новостей, а хотелось бы чтоб открывалась та, на которой расположена новость. Но ведь конкретную новость мы выбираем по `id`, а не с помощью ORDER и LIMIT.
Т.е. по сути необходимо как-то определять индекс (смещение) новости в заданной сортировке..
02.01.2012 в 12:03

149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
SELECT CEILING(COUNT(*)/[количество записей на странице]) FROM `news` WHERE `date`<=[требуемая дата, можно взять подзапросом по id]
02.01.2012 в 12:41

alhames.ru
Хм.. COUNT? А это мысль!))
Надо попробовать :)

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail