{% else-1 %}
Перед вами класс постраничной навигации.
Использование:
$c = n; - всего обьектов.
$e =10; //объектов на страницу
$navigator = new Navigator($c, $e);
//Здеся вывод фигни разной из базы
//Выводим саму навигацию и дополнительные передаваемые параметры. Если их ненадо, то пишем NULL
$navigator->print_nav(\'&id=\'.$id);
Вот и всё.
Чуть не забыл
page.php?p=last - последняя страница

                        
<?php

class Navigator{

public $pages; //Количество страниц

public $p; //Текущая страница

public $c;//Всего объектов

public $start;//параметр для LIMIT

public function __construct($c, $e){

$this->pages = ceil($c / $e);

$this->c= $c;

$p = 1;

if(isset($_REQUEST['p'])){

if($_REQUEST['p'] == 'last')

$p=$this->pages;

elseif($_REQUEST['p'] <= $this->pages){

$p = (int)$_REQUEST['p'];

if($p < 1)

$p = 1;

}

}

$this->start = ($p - 1) * $e;

$this->p = $p;

}



public function print_nav($q){

//если больше 1 страници, то выводим навигацию

if($this->pages > 1){

echo'<div class="post">';

//фперёд-назад

if($this->p > 1)

echo'<a href="'.$_SERVER['PHP_SELF'].'?p='.($this->p - 1).$q.'" accesskey="7">&laquo;-Назад</a>';

if($this->p < $this->pages && $this->p > 1)

echo' | ';

if($this->p < $this->pages)

echo'<a href="'.$_SERVER['PHP_SELF'].'?p='.($this->p + 1).$q.'" accesskey="9">Дальше-&raquo;</a>';

}

echo'<br/>

Страницы: ';

//дальше выводим цыферки

$prev=$this->p - 2;

$next=$this->p + 3;



if($prev < $this->c && $prev > 1)

echo'<a href="'.$_SERVER['PHP_SELF'].'?p=1'.$q.'">1</a> ... ';



for($i = $prev; $i < $next; $i++)

{

if($i <= $this->pages && $i >= 1){

if($this->p == $i)

echo'<strong>['.$i.']</strong>';

else

echo' <a href="'.$_SERVER['PHP_SELF'].'?p='.$i.$q.'">'.$i.'</a> ';

}

}

if($next <= $this->pages)

echo ' ... <a href="'.$_SERVER['PHP_SELF'].'?p='.$this->pages.$q.'">'.$this->pages.'</a>';

//а это форма

echo'<form action="'.$_SERVER['PHP_SELF'].'?'.$q.'" method="post">

<p>

<input name="p" size="4" maxlength="4" value=""/><input type="submit" value="&raquo;"/>

</p></form></div>';

}



}

}

//8===э канец!

?>
0 36 0
Без комментариев...