Постраничный вывод С ОГРАНИЧЕНИЕМ

Статус
В этой теме нельзя размещать новые ответы.

samb100

Новичок
Постраничный вывод С ОГРАНИЧЕНИЕМ

Есть такой код для постраничного вывода:

Код:
$p = 1;
do {
	if ($page == $p)
		{ echo "<a href=cat.php?id_categ=$id_categ&page=$p><b><font size=4>$p</font></b></a>\n"; 
		}
	else 
		{ echo "<a href=cat.php?id_categ=$id_categ&page=$p>$p</a>\n"; 
		}
	$p++;
	}	
while ($p <= $total);
где
// $page - это $_GET['page']
// $total - общее число записей в БД

Чтобы сделать постраничный вывод я делю общее количество записей в БД на желаемое количество записей
на одной странице и получаю число страниц. Далее с помощью формулы и LIMIT делаю постраничный вывод на страницы.
Всё это работает нормально.

Но скоро на сайте будет более 100 страниц, поэтому надо как-то ограничить число страниц на одной странице (сорри за тафтологию),
т.е. сначала выводятся 5 страниц, затем кликая на ">>" выводятся следующие 5 страниц и так далее,
пока не закончатся все страницы на сайте.

Как такое сделать?

Более наглядно это видно на скриншоте: http://mir44.ru/tmp/page.gif
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
в чем конкретно у тебя загвоздка?
если записей больше, чем N - выводить ссылку ">>"
потом пиши обработку обращения по ссылке ">>"
продумай алгоритм и делай, за неделю осилишь
 

samb100

Новичок
алгоритм я уже продумал: при нажатии на "<<" или ">>" появляется ссылки на следующие 5 страниц, и так пока не закончатся все страницы.

Это нужно для того, чтобы при большом количестве страниц ссылки на них цифрами не занимали много места.

-~{}~ 29.06.09 07:50:

скорее так: я затрудняюсь описать всё это на программном языке
 

Фанат

oncle terrible
Команда форума
я не издеваюсь, это правда не алгоритм.
алгоритм - это, как раз, готовая программа, порядок действий.

я так понимаю, что проблема только в том, чтобы заменить конечные цифры. то есть, вместо "число страниц" надо поставить цифру 5. и что в этом сложного?

-~{}~ 29.06.09 08:30:

то, что ты написал, называется, скорее, user case - то, что видит юзер.
но даже это ты описал не полностью. к примеру, движется ли в списке текущая страница слева направо, или все время стоит посередине.
 

samb100

Новичок
дело в том, что у меня не запланировано какое конкретное число "число страниц",
кол-во страниц выводятся в цикле от 1 и по сути до бесконечности (зависит от кол-ва статей).
Можно поставить кол-во статей на одной странице

-~{}~ 29.06.09 08:35:

эээ... что значит "движется"?..
если я правильно понял, то не движется, а именно, при нажатии на ">>" просто появляются следующие 5 страниц
(было 1 2 3 4 5, стало 6 7 8 9 10) и т.д.
и соответственно при нажатии на "<<" появляются предыдущие 5 страниц (было 6 7 8 9 10, стало 1 2 3 4 5)
 

Фанат

oncle terrible
Команда форума
у меня не запланировано какое конкретное число "число страниц",
"Чтобы сделать постраничный вывод я делю общее количество записей в БД на желаемое количество записей
на одной странице и получаю число страниц" - это ты писал?
 

samb100

Новичок
а..да....
Код:
$total = ceil($all_num/$num);
$all_num - общее количество записей в БД
$num - желаемое кол-во записей на одной странице
$total - получается, кол-во страниц всего
 

Фанат

oncle terrible
Команда форума
не поверишь, но я догадался самостоятельно, что все эти переменные означают.
поехали снова.
я так понимаю, что проблема только в том, чтобы заменить конечные цифры. то есть, вместо "число страниц" надо поставить цифру 5. ну, или, точнее, $page +5
и что в этом сложного?
 

samb100

Новичок
я не совсем понимаю, причем тут переменная $page, а также +5 ?
число страниц у нас - $total (это общее число страниц)
пусть это будет 20 страниц, total = 20 и эти 20 страниц надо вывести партиями по 5 страниц, так вот я не понимаю как это реализовать:
- разделить на блоки по 5 страниц (ну наверное надо ввести новую переменную)
- вывести ссылку на другие 5 страниц
 

Фанат

oncle terrible
Команда форума
господи.
нету у тебя никаких 20 страниц. у тебя есть ПЯТЬ. ты пять выводишь. не 20, а 5.
ты выводишь не "партиями", а только одну партию. в одной партии у тебя 5 страниц, а не 20. на одной странице ты выводишь только 5 ссылок. ферштеен? андестенд? доступно?
 

samb100

Новичок
блин, я тупой :(
что изменится если мы напишем $page+5 ? по-моему, ничего не изменится
 

Фанат

oncle terrible
Команда форума
когда кажется - креститься надо. что мешает сделать и посмотреть?
 

Фанат

oncle terrible
Команда форума
у тебя оперативная память очень маленькая, всего на одну строчку.
выше я два раза написал, что $page+5 нужно написать вместо $total

тебе следует всерьез задуматься о том, стоит ли заниматься программированием. да, сляпать пару страниц из готовых примеров у тебя получается. но понятие алгоритма тебе недоступно, похоже. то есть, ничего самостоятельно ты сделать не сможешь. надо ли оно тебе?
 

samb100

Новичок
в прошлом топике я почти сам докадался, значит я не совсем еще дебил, ЭТО РАДУЕТ!)))))

-~{}~ 29.06.09 20:52:

подсажите как сделать навигацию как на сайте там навигация вверху, если клацнешь на ">>" то появляется список из следующей 20-ки страниц, и так далее - просто и понятно для юзера. нужно тоже самое, только вместо 20-ки 5-ка страниц
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху