加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

两款万能的php分页类

发布时间:2020-05-28 01:55:23 所属栏目:PHP 来源:互联网
导读:这篇文章主要介绍了万能的php分页类,特别好用,需要使用php分页类的朋友不要错过。

本文为大家分享个超级好用、万能的php分页类,具体的实现代码如下

第一款php分页类

/**

  • 分页类
  • 使用方式:
  • $page = new Page();
  • $page->init(1000,20);
  • $page->setNotActiveTemplate('{a}');
  • $page->setActiveTemplate('{a}');
  • echo $page->show();
  • @author 风居住的地方
    */
    class Page {
    /**
    • 总条数
      */
      private $total;
      /**
    • 每页大小
      */
      private $pageSize;
      /**
    • 总页数
      */
      private $pageNum;
      /**
    • 当前页
      */
      private $page;
      /**
    • 地址
      */
      private $uri;
      /**
    • 分页变量
      */
      private $pageParam;
      /**
    • LIMIT XX,XX
      */
      private $limit;
      /**
    • 数字分页显示
      */
      private $listnum = 8;
      /**
    • 分页显示模板
    • 可用变量参数
    • {total} 总数据条数
    • {pagesize} 每页显示条数
    • {start} 本页开始条数
    • {end} 本页结束条数
    • {pagenum} 共有多少页
    • {frist} 首页
    • {pre} 上一页
    • {next} 下一页
    • {last} 尾页
    • {list} 数字分页
    • {goto} 跳转按钮
      */
      private $template = '共有{total}条数据每页显示{pagesize}条数据,本页{start}-{end}条数据共有{pagenum}页
        {frist}{pre}{list}{next}{last}{goto}
      ';
      /**
    • 当前选中的分页链接模板
      */
      private $activeTemplate = '<li class="active"><a href="javascript:;">{text}
    • ';
      /**
    • 未选中的分页链接模板
      */
      private $notActiveTemplate = '
    • <a href="{url}">{text}
    • ';
      /**
    • 显示文本设置
      */
      private $config = array('frist' => '首页','pre' => '上一页','next' => '下一页','last' => '尾页');
      /**
    • 初始化
    • @param type $total 总条数
    • @param type $pageSize 每页大小
    • @param type $param url附加参数
    • @param type $pageParam 分页变量
      */
      public function init($total,$pageSize,$param = '',$pageParam = 'page') {
      $this->total = intval($total);
      $this->pageSize = intval($pageSize);
      $this->pageParam = $pageParam;
      $this->uri = $this->geturi($param);
      $this->pageNum = ceil($this->total / $this->pageSize);
      $this->page = $this->setPage();
      $this->limit = $this->setlimit();
      }

/**

  • 设置分页模板
  • @param type $template 模板配置
    */
    public function setTemplate($template) {
    $this->template = $template;
    }

/**

  • 设置选中分页模板
  • @param type $activeTemplate 模板配置
    */
    public function setActiveTemplate($activeTemplate) {
    $this->activeTemplate = $activeTemplate;
    }

/**

  • 设置未选中分页模板
  • @param type $notActiveTemplate 模板配置
    */
    public function setNotActiveTemplate($notActiveTemplate) {
    $this->notActiveTemplate = $notActiveTemplate;
    }

/**

  • 返回分页
  • @return type
    */
    public function show() {
    return str_ireplace(array(
    '{total}','{pagesize}','{start}','{end}','{pagenum}','{frist}','{pre}','{next}','{last}','{list}','{goto}',),array(
    $this->total,$this->setPageSize(),$this->star(),$this->end(),$this->pageNum,$this->frist(),$this->prev(),$this->next(),$this->last(),$this->pagelist(),$this->gopage(),$this->template);
    }

/**

  • 获取limit起始数
  • @return type
    /
    public function getOffset() {
    return ($this->page - 1)
    $this->pageSize;
    }

/**

  • 设置LIMIT
  • @return type
    /
    private function setlimit() {
    return "limit " . ($this->page - 1)
    $this->pageSize . ",{$this->pageSize}";
    }

/**

  • 获取limit
  • @param type $args
  • @return type
    */
    public function __get($args) {
    if ($args == "limit") {
    return $this->limit;
    } else {
    return null;
    }
    }

/**

  • 初始化当前页
  • @return int
    */
    private function setPage() {
    if (!empty($_GET[$this->pageParam])) {
    if ($_GET[$this->pageParam] > 0) {
    if ($_GET[$this->pageParam] > $this->pageNum)
    return $this->pageNum;
    else
    return $_GET[$this->pageParam];
    }
    }
    return 1;
    }

/**

  • 初始化url
  • @param type $param
  • @return string
    */
    private function geturi($param) {
    $url = $_SERVER['REQUEST_URI'] . (strpos($_SERVER['REQUEST_URI'],"?") ? "" : "?") . $param;
    $parse = parse_url($url);
    if (isset($parse["query"])) {
    parse_str($parse["query"],$params);
    unset($params["page"]);
    $url = $parse["path"] . "?" . http_build_query($params);
    return $url;
    } else {
    return $url;
    }
    }

/**

  • 本页开始条数
  • @return int
    /
    private function star() {
    if ($this->total == 0) {
    return 0;
    } else {
    return ($this->page - 1)
    $this->pageSize + 1;
    }
    }

/**

  • 本页结束条数
  • @return type
    /
    private function end() {
    return min($this->page
    $this->pageSize,$this->total);
    }

/**

  • 设置当前页大小
  • @return type
    */
    private function setPageSize() {
    return $this->end() - $this->star() + 1;
    }

/**

  • 首页
  • @return type
    */
    private function frist() {
    $html = '';
    if ($this->page == 1) {
    $html .= $this->replace("{$this->uri}&page=1",$this->config['frist'],true);
    } else {
    $html .= $this->replace("{$this->uri}&page=1",false);
    }
    return $html;
    }

/**

  • 上一页
  • @return type
    */
    private function prev() {
    $html = '';
    if ($this->page > 1) {
    $html .= $this->replace($this->uri.'&page='.($this->page - 1),$this->config['pre'],false);
    } else {
    $html .= $this->replace($this->uri.'&page='.($this->page - 1),true);
    }
    return $html;
    }

/**

  • 分页数字列表
  • @return type
    */
    private function pagelist() {
    $linkpage = "";
    $lastlist = floor($this->listnum / 2);
    for ($i = $lastlist; $i >= 1; $i--) {
    $page = $this->page - $i;
    if ($page >= 1) {
    $linkpage .= $this->replace("{$this->uri}&page={$page}",$page,false);
    } else {
    continue;
    }
    }
    $linkpage .= $this->replace("{$this->uri}&page={$this->page}",$this->page,true);
    for ($i = 1; $i <= $lastlist; $i++) {
    $page = $this->page + $i;
    if ($page <= $this->pageNum) {
    $linkpage .= $this->replace("{$this->uri}&page={$page}",false);
    } else {
    break;
    }
    }
    return $linkpage;
    }

/**

  • 下一页
  • @return type
    */
    private function next() {
    $html = '';
    if ($this->page < $this->pageNum) {
    $html .= $this->replace($this->uri.'&page='.($this->page + 1),$this->config['next'],false);
    } else {
    $html .= $this->replace($this->uri.'&page='.($this->page + 1),true);
    }
    return $html;
    }

/**

  • 最后一页
  • @return type
    */
    private function last() {
    $html = '';
    if ($this->page == $this->pageNum) {
    $html .= $this->replace($this->uri.'&page='.($this->pageNum),$this->config['last'],true);
    } else {
    $html .= $this->replace($this->uri.'&page='.($this->pageNum),false);
    }
    return $html;
    }

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读