简单好用的PHP分页类

 更新时间:2016年04月19日 16:53:30   作者:我才是撸大师  
这篇文章主要为大家分享了一款简单好用的PHP分页类page.class.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
 $_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程序设计有所帮助。

相关文章

  • Android实现IOS相机滑动控件

    Android实现IOS相机滑动控件

    这篇文章主要为大家详细介绍了Android实现IOS相机滑动控件的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android 文件下载三种基本方式

    Android 文件下载三种基本方式

    这篇文章主要介绍了Android 文件下载三种基本方式,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2017-06-06
  • Android利用ViewPager实现滑动广告板实例源码

    Android利用ViewPager实现滑动广告板实例源码

    利用ViewPager我们可以做很多事情,从最简单的导航,到页面切换菜单等等。ViewPager的功能就是可以使视图滑动,就像Lanucher左右滑动那样
    2013-06-06
  • Android中正确使用字体图标(iconfont)的方法

    Android中正确使用字体图标(iconfont)的方法

    IconFont字体不仅仅流行于Web开发,在移动开发中也渐渐的使用的范围更广泛。这篇文章主要介绍了在Android开发中使用icon font的代码和方法。对大家学习使用iconfont有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧。
    2016-10-10
  • 使用Android studio3.6的java api方式调用opencv

    使用Android studio3.6的java api方式调用opencv

    这篇文章主要介绍了Android studio3.6的java api方式调用opencv的代码详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Android  PreferenceActivity与PreferenceFragment详解及简单实例

    Android PreferenceActivity与PreferenceFragment详解及简单实例

    这篇文章主要介绍了Android PreferenceActivity与PreferenceFragment详解及简单实例的相关资料,需要的朋友可以参考下
    2016-12-12
  • 安卓(Android)聊天机器人实现代码分享

    安卓(Android)聊天机器人实现代码分享

    这是一个安卓智能聊天机器人的源码,采用了仿微信的风格设计,调用的是图灵机器人的API,能够实现智能聊天、讲故事、讲笑话、查天气、查公交等丰富的功能
    2015-11-11
  • Android实现USB扫码枪获取扫描内容

    Android实现USB扫码枪获取扫描内容

    这篇文章主要为大家详细介绍了Android实现USB扫码枪获取扫描内容,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Android RecyclerView实现点击条目删除

    Android RecyclerView实现点击条目删除

    这篇文章主要为大家详细介绍了Android RecyclerView实现点击条目删除,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Android实现中国象棋游戏(局域网版)

    Android实现中国象棋游戏(局域网版)

    这篇文章主要为大家详细介绍了Android实现局域网版的中国象棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论