[PHP] ページ切り替え部品(pager)
解説
PHPでのページ切り替え部品(pager)の実装。
コンストラクタの引数に、現在のページ番号、最大ページ番号、ページ番号をURLパラメータに付ける元となるURL、URL末尾に付けるページ内要素のIDを指定する。
show()で表示する。
このサイトのトップページでも使っている。
ソース
<?php class Pager { private $page = 1; private $page_max = 1; private $url = '/'; private $element_id = ''; function __construct($page, $page_max, $url, $element_id) { $this->page = $page; $this->page_max = $page_max; $this->url = $url; $this->element_id = $element_id; } public function show() { echo '<ol class="pager">'; $prev = $this->page - 1; if($prev > 0) { echo '<li><a data-page="'.$prev.'" href="'.$this->getUrl($prev).'"><prev</a></li>'; } else { echo '<li><prev</li>'; } for($i = 1; $i <= $this->page_max; ) { if($i == $this->page) { echo '<li>'.$i.'</li>'; $i++; } elseif(1 < $i && $i < $this->page - 2) { echo '<li>...</li>'; $i = $this->page - 2; } elseif($this->page + 2 < $i && $i < $this->page_max) { echo '<li>...</li>'; $i = $this->page_max; } else { echo '<li><a data-page="'.$i.'" href="'.$this->getUrl($i).'">'.$i.'</a></li>'; $i++; } } $next = $this->page + 1; if($next <= $this->page_max) { echo '<li><a data-page="'.$next.'" href="'.$this->getUrl($next).'">next></a></li>'; } else { echo '<li>next></li>'; } echo '</ol>'; } private function getUrl($page) { return $this->url.'?page='.$page.$this->element_id; } } ?>