Как сделать нумерацию фиксированной?

12
Qinghua
На сайте с 01.09.2009
Offline
103
1054

Хочу сделать фиксированную нумерацию новостей.

То есть в конце (первая по времени появления) страница 1, в начале (последняя по времени) ххх. На каждой странице контент не изменяется.

Не соображу возможно ли такое.

Вроде на баше так, но как это сделать?

Единственное что приходит на ум - на индексной страницы не фиксированное количество, а накапливается критическая масса и происходит создание новой страницы. Но все-таки хотелось бы на индексной странице фиксированное количество новостей.

Возможно ли такое? И как на баше это устроено?

D
На сайте с 25.09.2008
Offline
16
#1

Возможно. Реализация зависит от движка. Стукните в аську по возможности помогу 274-037-572.

Qinghua
На сайте с 01.09.2009
Offline
103
#2

Да мне без конкретики, общими словами как такое реализовать.

Не понятно если все фиксировано, то куда "излишек" элементов попадает.

Ася пока что-то не коннектится.

D
На сайте с 25.09.2008
Offline
16
#3

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

1. Считаем количество элементов для вывода (для краткости давайте назовем их записи)

2. Делим количество записей на количество элементов на странице получаем количество страниц

3. При выборке из базы выбираем через лимит с позиции количество элементов на страницу*на текущий номер страницы, количество элементов на странице.

4. Выводим полученные записи, выводим постраничную навигацию.

Все.

A
На сайте с 10.10.2008
Offline
17
#4

очень просто, принцип тот что и при обычной навигации, только лимит не прибавляется, а убывает.

$onpage=5; //новостей на странице

$amount=152; //количество новостей

$pages=ceil($amount/$onpage); //количество страниц

$limit_start=$amount-($page*$onpage); // где $page - номер страницы, если номер < 0 сделать 0

$limit_end=$onpage;

таким образом:

Страница 1 LIMIT 147, 5

Страница 2 LIMIT 142, 5

Страница 3 LIMIT 137, 5

Страница 4 LIMIT 132, 5

Страница 5 LIMIT 127, 5

и т.д.

Qinghua
На сайте с 01.09.2009
Offline
103
#5

мой вопрос - куда девается "нефиксированный" излишек?

При вашем методе (если я правильно понял) он вылезает на первой странице, что нежелательно.

Я и спрашиваю как сделать так, чтобы на первой странице было определенное количество элементов.

Как на баше устроено?

Т.е. если всего 10 элементов по три на страницу, то куда один лишний девается?

D
На сайте с 25.09.2008
Offline
16
#6

Ну как вы себе это представляете? И на баше по мере поступления новых данных старые просто тонут. Или добавлять объемами на страницу. или выводить страницу только после того, как для нее будет достаточно элементов. А из 10 элементов 12 вы никак не получите.

A
На сайте с 10.10.2008
Offline
17
#7

допустим у нас 18 записей, тогда лимиты будут такие:

Страница 1 LIMIT 13, 5

Страница 2 LIMIT 8, 5

Страница 3 LIMIT 3, 5

Страница 4 LIMIT 0, 3

немного в предыдущем посте ошибся, второй лимит для последней страницы берем такой же как у первый у передпоследней

Alsp добавил 24.02.2010 в 16:16

function get_navi_limit($amount,$page,$onpage){

$limit_start=$amount-($page*$onpage);

if($limit_start<0){

$limit_start=0;

$limit_end=$amount-(($page-1)*$onpage);

} else {

$limit_end=$onpage;

}

return $limit_start.','.$limit_end;

}

Alsp добавил 24.02.2010 в 16:18

никакого остатка на первой странице не будет, это функция для генерации лимита, параметры я думаю понятные.

Alsp добавил 24.02.2010 в 16:22

блин, немного вас не понял))

та функция, которую я написал работает как на ithappens

Alsp добавил 24.02.2010 в 16:28

попробуйте вот так: вроди то что вам нужно

function get_fix_navi_limit($amount,$page,$onpage){

$pages=ceil($amount/$onpage);

$page_real=$pages-$page;

$limit_start=$page_real*$onpage;

$limit_end=$onpage;

return $limit_start.','.$limit_end;

}

Qinghua
На сайте с 01.09.2009
Offline
103
#8
dekus:
Ну как вы себе это представляете? И на баше по мере поступления новых данных старые просто тонут. Или добавлять объемами на страницу. или выводить страницу только после того, как для нее будет достаточно элементов. А из 10 элементов 12 вы никак не получите.

Значит ответ на мой вопрос - остаток вылазеет на последней страницы, а на всех остальных контент ходит по кругу (полный круг, когда последняя заполняется). Когда смотрел последнюю страницу баша, она была полной.

Добавлять объемами выход, но обычно неприемлемо.

Alsp, тогда получается, что на титульной странице может быть от 1 до 5 элементов, что плохо.

Решение нашел - делать "плавающей" с двойным объемом предпоследнюю страницу. Все остальные фиксированы. Это даже может быть плюсом для юзабилити.

Т.е. если 10 элементов по три на страницу, то будет

1 - 123

2 - 4567

3 - 8910

A
На сайте с 10.10.2008
Offline
17
#9

Qinghua, в первом варианте так называемый остаток (от 1 до 4 новостей) таки будут на последней странице, во втором - на первой.

Qinghua
На сайте с 01.09.2009
Offline
103
#10

Тогда уж лучше, чтобы был не остаток, а излишек.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий