Ознакомьтесь с нашей политикой обработки персональных данных
09:42 

MySQL offset

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

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

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

@темы: MySQL

Комментарии
2012-01-02 в 11:31 

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

2012-01-02 в 11:49 

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

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

2012-01-02 в 12:03 

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

2012-01-02 в 12:41 

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

   

@web-программирование

главная