/**
* php分页类,支持动态静态url
*/
class Pager {
public $url;
private $maxpageno;
private $pageno;
private $suffix = ''; //静态文件后缀
/**
*
* @param int $total 总数
* @param int $pagesize 每页数
* @param string $url
* @param int $maxpageno 最多页码数 ,包括省略不包括首页上页等,>=7
*/
function __construct($total, $pagesize, $url, $maxpageno = 7) {
$this->pageno = ceil($total / $pagesize);
$this->url = $url;
$this->maxpageno = $maxpageno < 7 ? 7 : $maxpageno;
}
function pagelist($curpage = 1, $curclass = 'in') {
if ($pos = strrpos($this->url, '.')) {
$this->suffix = substr($this->url, $pos);
$this->url = substr($this->url, 0, $pos);
}
//首页上页下页末页
$index_url = $pre_url = $next_url = $end_url = 'javascript:void(0)';
if ($curpage > 1) {
$index_url = "{$this->url}1{$this->suffix}";
$pre_url = $this->url . ($curpage - 1) . $this->suffix;
}
if ($curpage < $this->pageno) {
$end_url = "{$this->url}{$this->pageno}{$this->suffix}";
$next_url = $this->url . ($curpage + 1) . $this->suffix;
}
//省略
if ($this->pageno > $this->maxpageno) {
$half = floor(($this->maxpageno - 4) / 2);
$half_start = $curpage - $half + 1;
if ($this->maxpageno % 2 !== 0) --$half_start;
$half_end = $curpage + $half;
}
if (($this->pageno - $curpage) < ($this->maxpageno - 3)) {
$half_start = $this->pageno - $this->maxpageno + 3;
unset($half_end);
}
if ($curpage <= ($this->maxpageno - 3)) {
$half_end = $this->maxpageno - 2;
unset($half_start);
}
$page = $this->getpage($index_url, ' class="index"', '首页') . $this->getpage($pre_url, ' class="pre"', '上一页');
for($i = 1; $i <= $this->pageno; $i++) {
if (isset($half_start) && $i < $half_start && $i > 1) {
if ($i == 2) $page .= $this->getpage('javascript:void(0)', ' class="pageinfo"', '...');
continue;
}
if (isset($half_end) && $i > $half_end && $i < $this->pageno) {
if ($i == ($half_end + 1)) $page .= $this->getpage('javascript:void(0)', ' class="pageinfo"', '...');
continue;
}
if ($i == $curpage) {
$in = " class='{$curclass}'";
$url = 'javascript:void(0)';
} else {
$in = '';
$url = $this->url . $i . $this->suffix;
}
$page .= $this->getpage($url, $in, $i);
}
$page .= $this->getpage($next_url, ' class="pre"', '下一页') . $this->getpage($end_url, ' class="index"', '末页');
return $page;
}
private function getpage($url, $class, $i) {
return "
{$i}";}
}
$curpage = isset($_GET['page']) ? $_GET['page'] : 1;
$page = new Pager(35, 2, '?page=');
?>
动态分页:
=$page->pagelist($curpage)?>
静态分页,看url:
$page->url = '/html/news/list_.html';
echo $page->pagelist($curpage);
?>
css:
ul,li,p{list-style:none;margin:0;padding:0}
a{text-decoration:none;}
/*分页*/
.pagelist,p{width: 600px;margin: 0 auto;height: 25px;padding-top: 10px;}
.pagelist li{float: left;}
.pagelist a{display: block;width: 22px;height: 19px;line-height:20px;border: 1px solid #e3e3e3;background: url(list.gif) repeat-x;text-align: center;color: #676765;font-size: 12px;margin-left: 5px;}
.pagelist li.in a{background: url(list_in.gif) repeat-x;border-color: #b5936d;color: #fff}
.pagelist li.index a{width: 40px;}/*首页*/
.pagelist li.pre a{width: 55px;}/*上一页*/
.pagelist li.pageno a{width: 35px;}/*省略*/
.pagelist .pageinfo{font-size: 12px;}
p{font:14px/20px 'Microsoft Yahei';}
图片: