本文为大家分享了两段PHP分页类,很实用,供大家参考,具体内容如下
<?php
class Page {
private $total; //总记录
private $pagesize; //每页显示多少条
private $limit; //limit
private $page; //当前页码
private $pagenum; //总页码
private $url; //地址
private $bothnum; //两边保持数字分页的量
//构造方法初始化
public function __construct($_total, $_pagesize) {
$this->total = $_total ? $_total : 1;
$this->pagesize = $_pagesize;
$this->pagenum = ceil($this->total / $this->pagesize);
$this->page = $this->setPage();
$this->limit = \"LIMIT \".($this->page-1)*$this->pagesize.\",$this->pagesize\";
$this->url = $this->setUrl();
$this->bothnum = 2;
}
//拦截器
private function __get($_key) {
return $this->$_key;
}
//获取当前页码
private function setPage() {
if (!empty($_GET[\'page\'])) {
if ($_GET[\'page\'] > 0) {
if ($_GET[\'page\'] > $this->pagenum) {
return $this->pagenum;
} else {
return $_GET[\'page\'];
}
} else {
return 1;
}
} else {
return 1;
}
}
//获取地址
private function setUrl() {
$_url = $_SERVER[\"REQUEST_URI\"];
$_par = parse_url($_url);
if (isset($_par[\'query\'])) {
parse_str($_par[\'query\'],$_query);
unset($_query[\'page\']);
$_url = $_par[\'path\'].\'?\'.http_build_query($_query);
}
return $_url;
} //数字目录
private function pageList() {
for ($i=$this->bothnum;$i>=1;$i--) {
$_page = $this->page-$i;
if ($_page < 1) continue;
$_pagelist .= \' <a href=\"\'.$this->url.\'&page=\'.$_page.\'\">\'.$_page.\'</a> \';
}
$_pagelist .= \' <span class=\"me\">\'.$this->page.\'</span> \';
for ($i=1;$i<=$this->bothnum;$i++) {
$_page = $this->page+$i;
if ($_page > $this->pagenum) break;
$_pagelist .= \' <a href=\"\'.$this->url.\'&page=\'.$_page.\'\">\'.$_page.\'</a> \';
}
return $_pagelist;
}
//首页
private function first() {
if ($this->page > $this->bothnum+1) {
return \' <a href=\"\'.$this->url.\'\">1</a> ...\';
}
}
//上一页
private function prev() {
if ($this->page == 1) {
return \'<span class=\"disabled\">上一页</span>\';
}
return \' <a href=\"\'.$this->url.\'&page=\'.($this->page-1).\'\">上一页</a> \';
}
//下一页
private function next() {
if ($this->page == $this->pagenum) {
return \'<span class=\"disabled\">下一页</span>\';
}
return \' <a href=\"\'.$this->url.\'&page=\'.($this->page+1).\'\">下一页</a> \';
}
//尾页
private function last() {
if ($this->pagenum - $this->page > $this->bothnum) {
return \' ...<a href=\"\'.$this->url.\'&page=\'.$this->pagenum.\'\">\'.$this->pagenum.\'</a> \';
}
}
//分页信息
public function showpage() {
$_page .= $this->first();
$_page .= $this->pageList();
$_page .= $this->last();
$_page .= $this->prev();
$_page .= $this->next();
return $_page;
}
}
?>
分页样式如下图所示:
使用说明:
<?php $_page = new Page($_total,$_pagesize); //其中 $_total 是数据集的总条数,$_pagesize 是每页显示的数量. ?>
第二个分页类:
<?php
/**
* page.class.php 分页类
* 日期:2015-04-05
* http://aowana.sinaapp.com
*/
class page
{
public static $url;
public static $page;
public static $total;
public static $size;
public static $number;
public static $max;
public static $action = array(\'previous\', \'number\', \'next\');
public static function show($url, $page, $total, $size=10, $number=11)
{
self::$url = $url;
self::$page = $page;
self::$total = $total;
self::$size = $size;
self::$number = $number;
self::$max = ceil($total / $size);
$str = \'\';
foreach (self::$action as $name)
$str .= self::$name();
return $str;
}
public static function first()
{
if (self::$page > 2)
{
$url = self::url(1);
return \"<li id=\\\"pbfirst\\\"><a href=\\\"{$url}\\\" title=\\\"首页\\\">首页</a></li>\";
}
}
public static function previous()
{
if (self::$page > 1)
{
$url = self::url(self::$page - 1);
return \"<li id=\\\"pbprevious\\\"><a href=\\\"{$url}\\\" title=\\\"上一页\\\">上一页</a></li>\";
}
}
public static function number()
{
$str = \'\';
$f = self::$number % 2 ? (self::$number - 1) / 2 : self::$number / 2;
$s = self::$page - $f;
$e = self::$page + $f;
if (self::$page < ($f + 1))
{
$s = 1;
$e = self::$number;
$e = $e > self::$max ? self::$max : $e;
}
if (self::$page > (self::$max - $f))
{
$s = self::$max - self::$number;
$s = $s < 1 ? 1 : $s;
$e = self::$max;
}
for ($i=$s; $i<=$e; $i++)
{
$url = self::url($i);
if ($i == self::$page)
$str .= \"<li><strong>{$i}</strong></li>\";
else
$str .= \"<li><a href=\\\"{$url}\\\" title=\\\"第{$i}页\\\">{$i}</a></li>\";
}
return $str;
}
public static function next()
{
if (self::$page < self::$max)
{
$url = self::url(self::$page + 1);
return \"<li id=\\\"pbnext\\\"><a href=\\\"{$url}\\\" title=\\\"下一页\\\">下一页</a></li>\";
}
}
public static function end()
{
if ((self::$max - self::$page) > 1)
{
$url = self::url(self::$max);
return \"<li id=\\\"pbend\\\"><a href=\\\"{$url}\\\" title=\\\"末页\\\">末页</a></li>\";
}
}
public static function url($page)
{
return str_replace(\'{page}\', $page, self::$url);
}
}
以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。
本文地址:https://www.stayed.cn/item/18547
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我