Класс для постраничной навигации

Класс для постраничной навигации с использованием ЧПУ


<?

/*
*Класс для постраничной навигации*
*Автор Vocaloid IA/Kasane Teto*
*/

class Page {

public function __construct($count,$limit=10){

$this->js = false;
$this->count=$count;
$this->limit=(int)$limit;
$this->page=$this->page();
$this->start=$this->start();
$this->no_post = 'Пусто';

$this->k_page=$this->k_page();

public function page(){

if (isset($_GET['page'])){
if ($_GET['page'] == 'last'){
$page=$this->k_page;
}
else{
$page=(int)$_GET['page'];
if ($page == 0)$page = 1;
}
}else
$page=1;

return $page;
}

public function start(){

$start=$this->limit*$this->page;
$start=$start-$this->limit;
return $start;
}

public function k_page(){

$pages=ceil($this->count/$this->limit);
return $pages;

}

public function out($link){

$url=null;

if ($this->count == 0)$url = '<div class="err" style="textalign:center">'.$this->no_post.'</div>';


if ($this->k_page > 1){
$url='<table cellpadding="0" cellspacing="0" style="width:100%"><tr><td class="pages" style="width: 35%; border-radius: 6px 0px 0px 6px">';
if ($this->page > 1)$url=$url.'<a style="border: 0px; border-radius: 6px 0px 0px 6px"
href="'.htm($link).($this->page-1).'"
'.($this->js == true?'load="none" page="'.($this->page-1).'"':null).'
class="page">«Назад</a>';
else $url=$url.'«Назад';

$url=$url.'</td><td class="pages" style="width: 30%">';

$url=$url.$this->page.'/'.$this->k_page;

$url=$url.'</td><td class="pages" style="width: 35%; border-radius: 0px 6px 6px 0px">';

if ($this->page < $this->k_page)
$url=$url.'<a style="border: 0px; border-radius: 0px 6px 6px 0px"
'.($this->js == true?'load="none" page="'.($this->page+1).'"': null).'
href="'.htm($link).($this->page+1).'">Вперед»</a>';
else $url=$url.'Вперед»';

$url=$url.'</td></tr></table>';
}
return $url;
}
}

Пример использования(mysqli):

$count =$db->query('select count(id) as count from user')->fetch_object();

$page = new page($count->count);
$page->no_post = "Юзвыри ацуцтвуют";

$q = $db->query('select * from user order by id desc limit '.$page->start.', '.$page->limit);

while($post = $q->fetch_object()){
echo 'Юзырь '.$post->nick;
}

echo $page->out('?page=');


  19.01.24 / 15:48 | PHP |   92 | 0   0