Разбитие значений по страницам!!!

  • Автор темы Killer
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

Killer

#1
Я взял пример с php.spb.ru он разбивает результаты по страницам, но мне бы хотелось узнать как сделать так чтобы если например результатов больше 10 страниц то выводилось вот так:
1 2 3 4 5 6.......15

Вот код который выводит по страницчно результаты:
for ($i=1; $i<=floor($all/$len); $i++)

echo "<a href=$PHP_SELF?z=search&all=$all&len=$len&".
"start=".(($i-1)*$len)."&s=".urlencode($s).">$i </a> ";
 
B

Belfisher

#2
Как на ПХП это будет делается не буду писать, но алгоритм в общем опишу. Для начала находишь кол-во страниц ($num_pages). Ну пусть у тебя их будет 100 для точностию. Что хочу сделать. пускай выводит страницы таким образом 1 2 3 4 5...100. ввожу переменную, кол-во показываемых ссылок на страницы (назовём её $num), в данном случае 5. Допустим я нахожусь на станице номер один ($number), тогда в выводе ссылок на страницы запускаю щётчик от 1 до $num. Определяю номер текущей страницы (в нашем случае 1) и пишу:
Код:
if ($number!=1) {
?>
<a href="pages.php?number=1">1</a>...
<?
}
for ($i=1; $i<=$num; $i++) {
?>
<a href="pages.php?number=<? echo $number+$i ?>"><? echo $number+$i ?></a>
<?
}
?>
...<a href="pages.php?number=<? echo $num_pages ?>"><? echo $num_pages ?></a>
З.Ы. А вроде код не собирался писать, но пришлось :)
 

admin

Well-known member
08.08.2003
2 754
0
#3
Killer
Надо просто немного подумать. За тебя никто код писать не будет.
Могу только подать идею.
выводить надо первую страницу, потом сколько-то перед текушей, текушую, сколько-то после текущей, и последнюю.
Текущая определяется в $start.
Код:
// тут если надо - рисуем первую 
$pages = floor($all/$len); 
for($i=(($start-3)<0?0:*$start-3)); $i<=($start+3>$pages?$pages:$start+3); $i++){ 
// 
} 
// тут если надо - рисуем последнюю
КОд не запускал, это только идея

Так что ищи на hotscripts.com и иже с ним. Ключевое слово: pagination.
 
Статус
Закрыто для дальнейших ответов.