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

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

  1. <?
  2.  
  3. /*
  4. *Класс для постраничной навигации*
  5. *Автор Vocaloid IA/Kasane Teto*
  6. */
  7.  
  8. class Page {
  9.  
  10. public function __construct($count,$limit=10){
  11.  
  12. $this->js = false;
  13. $this->count=$count;
  14. $this->limit=(int)$limit;
  15. $this->page=$this->page();
  16. $this->start=$this->start();
  17. $this->no_post = 'Пусто';
  18.  
  19. $this->k_page=$this->k_page();
  20.  
  21. public function page(){
  22.  
  23. if (isset($_GET['page'])){
  24. if ($_GET['page'] == 'last'){
  25. $page=$this->k_page;
  26. }
  27. else{
  28. $page=(int)$_GET['page'];
  29. if ($page == 0)$page = 1;
  30. }
  31. }else
  32. $page=1;
  33.  
  34. return $page;
  35. }
  36.  
  37. public function start(){
  38.  
  39. $start=$this->limit*$this->page;
  40. $start=$start-$this->limit;
  41. return $start;
  42. }
  43.  
  44. public function k_page(){
  45.  
  46. $pages=ceil($this->count/$this->limit);
  47. return $pages;
  48.  
  49. }
  50.  
  51. public function out($link){
  52.  
  53. $url=null;
  54.  
  55. if ($this->count == 0)$url = '<div class="err" style="textalign:center">'.$this->no_post.'</div>';
  56.  
  57.  
  58. if ($this->k_page > 1){
  59. $url='<table cellpadding="0" cellspacing="0" style="width:100%"><tr><td class="pages" style="width: 35%; border-radius: 6px 0px 0px 6px">';
  60. if ($this->page > 1)$url=$url.'<a style="border: 0px; border-radius: 6px 0px 0px 6px"
  61. href="'.htm($link).($this->page-1).'"
  62. '.($this->js == true?'load="none" page="'.($this->page-1).'"':null).'
  63. class="page">«Назад</a>';
  64. else $url=$url.'«Назад';
  65.  
  66. $url=$url.'</td><td class="pages" style="width: 30%">';
  67.  
  68. $url=$url.$this->page.'/'.$this->k_page;
  69.  
  70. $url=$url.'</td><td class="pages" style="width: 35%; border-radius: 0px 6px 6px 0px">';
  71.  
  72. if ($this->page < $this->k_page)
  73. $url=$url.'<a style="border: 0px; border-radius: 0px 6px 6px 0px"
  74. '.($this->js == true?'load="none" page="'.($this->page+1).'"': null).'
  75. href="'.htm($link).($this->page+1).'">Вперед»</a>';
  76. else $url=$url.'Вперед»';
  77.  
  78. $url=$url.'</td></tr></table>';
  79. }
  80. return $url;
  81. }
  82. }

Пример использования(mysqli):
  1. $count =$db->query('select count(id) as count from user')->fetch_object();
  2.  
  3. $page = new page($count->count);
  4. $page->no_post = "Юзвыри ацуцтвуют";
  5.  
  6. $q = $db->query('select * from user order by id desc limit '.$page->start.', '.$page->limit);
  7.  
  8. while($post = $q->fetch_object()){
  9. echo 'Юзырь '.$post->nick;
  10. }
  11.  
  12. echo $page->out('?page=');


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