Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Вычисление страницы, на которой находится элемент


Автор: Deg 1.10.2010, 22:26
Добрый вечер (у кого как, +2 smile ), жители форума.

Вопрос назрел. Есть сайт, в нем раздел, например, "статьи". В разделе 1 000 000 записей (просто акцент на то, что записей много). Записи в разделе сортируются по названию в алфавитном порядке. Вопрос: Как вычислить, на какой странице будет моя новая запись, если известно, понятное дело, ее название и количество элементов на странице, например 50. Интересует алгоритмически наибыстрейший вариант.

Спасибо за помощь.

Автор: Muerto 2.10.2010, 11:18
Делим количество записей на 50, затем Ceil и получаем какая последняя страница, если на будущее то в расчете делаем +1

Автор: IgorIV 2.10.2010, 11:40
Muerto, ответ неправильный. Сортировка по алфавиту, а не по дате.

Автор: ksnk 2.10.2010, 13:08
Deg, 1млн записей подразумевает достаточно частое добавление новых записей.

Нужен ли точный результат? Обычно такое значение нужно для отображения маркера на скроллере, а маркер можно и примерно поставить.

.

Автор: Deg 4.10.2010, 10:36
В данном случае, это админ панель, и раздел имеет немеряно записей, близкое к миллиону, хотелось окрывать нужную страницу, чтобы после добавления не искать страницу, куда она добавилась, хотя все решается, думаю, фильтром над списком, набрал первые буквы и все. Но все-таки на будущее хотелось бы понять как это делается (вычисление страницы, на которую добавится элемент)

Добавлено через 1 минуту и 44 секунды
IgorIV, и сортировка специально сказана, как "по алфавиту". Так как там вообще произвольно устанавливаемая сортировка.

Автор: skyboy 4.10.2010, 10:43
Код

select count(*)
from sometable
where title< "Твой заголовок"


Автор: Deg 4.10.2010, 11:14
skyboy, спасибо, ты крут smile

Вопрос закрыт.

Автор: skyboy 4.10.2010, 13:21
ну, естественно, вопрос быстродействия будет стоять. особенно, если сортировка должна идти по аолю TEXT  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)