网络编程
位置:首页>> 网络编程>> php编程>> 简单好用的PHP分页类

简单好用的PHP分页类

作者:我才是撸大师  发布时间:2023-11-22 09:32:39 

标签:PHP,分页类

本文为大家分享了两段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分页类

使用说明:


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

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com