[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;
}
}
?>