侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

ThinkPHP实现分页功能

ThinkPHP  /  管理员 发布于 8年前   188

前几篇(上传,缩略图,验证码,自动验证表单)文章介绍的功能实现都是基于ThinkPHP框架封装好的类进行实现的,所以这次自己写一个分页类在框架中使用。

首先在根目录建一个Tools文件夹,在Tools文件夹下建Page.class.php类文件,这样以后自定义的工具类都可放在Tools文件夹下。

此类封装有以下函数:获取请求地址,开始页,从哪一条显示,结束页 从哪一条结束,页码列表(首页超链接,上一页,页码数字列表超链接,下一页,尾页,跳转),对于分页足够使用!

下面是Page.class.php代码

"个记录", "prev"=>"上一页", "next"=>"下一页", "first"=>"首 页", "last"=>"尾 页");  private $listNum=8; //限制页码列表数目    /*   * $total 总记录数   * $listRows 每页显示行数   */  public function __construct($total, $listRows=10, $pa=""){    $this->total=$total;  //数据表中总记录数    $this->listRows=$listRows; //设置每页显示行数    $this->uri=$this->getUri($pa); //请求地址    $this->page=!empty($_GET["page"]) ? $_GET["page"] : 1; //当前页    $this->pageNum=ceil($this->total/$this->listRows); //总页数    $this->limit=$this->setLimit(); //限制每页长度  }  private function setLimit(){    return "Limit ".($this->page-1)*$this->listRows.", {$this->listRows}";  }  //请求地址  private function getUri($pa){    $url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"], '?')?'':"?").$pa;    $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;  }  function __get($args){    if($args=="limit")      return $this->limit;    else      return null;  }  //开始页,从哪一条显示  private function start(){    if($this->total==0)      return 0;    else      return ($this->page-1)*$this->listRows+1;  }  //从哪一条结束  private function end(){    return min($this->page*$this->listRows,$this->total);  }  //首页超链接  private function first(){    $html = "";    if($this->page==1)      $html.='';    else      $html.="  uri}&page=1'>{$this->config["first"]}  ";    return $html;  }  //上一页  private function prev(){    $html = "";    if($this->page==1)      $html.='';    else      $html.="  uri}&page=".($this->page-1)."'>{$this->config["prev"]}  ";    return $html;  }  //页码数字列表超链接  private function pageList(){    $linkPage="";        $inum=floor($this->listNum/2);      for($i=$inum; $i>=1; $i--){      $page=$this->page-$i;      if($page<1)        continue;      $linkPage.=" uri}&page={$page}'>{$page} ";    }      $linkPage.=" {$this->page} ";        for($i=1; $i<=$inum; $i++){      $page=$this->page+$i;      if($page<=$this->pageNum)        $linkPage.=" uri}&page={$page}'>{$page} ";      else        break;    }    return $linkPage;  }  //下一页  private function next(){    $html = "";    if($this->page==$this->pageNum)      $html.='';    else      $html.="  uri}&page=".($this->page+1)."'>{$this->config["next"]}  ";    return $html;  }  //尾页  private function last(){    $html = "";    if($this->page==$this->pageNum)      $html.='';    else      $html.="  uri}&page=".($this->pageNum)."'>{$this->config["last"]}  ";    return $html;  }  //跳转  private function goPage(){    return '    ';  }  //页码列表  function fpage($display=array(0,1,2,3,4,5,6,7,8)){    $html[0]="  共有{$this->total}{$this->config["header"]}  ";    $html[1]="  每页显示".($this->end()-$this->start()+1)."条,本页{$this->start()}-{$this->end()}条  ";    $html[2]="  {$this->page}/{$this->pageNum}页  ";        $html[3]=$this->first();    $html[4]=$this->prev();    $html[5]=$this->pageList();    $html[6]=$this->next();    $html[7]=$this->last();    $html[8]=$this->goPage();    $fpage='';    foreach($display as $index){      $fpage.=$html[$index];    }    return $fpage;  }}

控制器代码:

//商品列表  function showlist(){   //实现分页效果   $goods = D('goods');   //① 获得数据的总记录条数   $total = $goods -> count(); //select count(*) from sw_goods;   $per = 7; //每页显示7条记录   //②实例化分页类   $page_obj = new \Tools\Page($total, $per);   //③自定义sql语句,获取每页信息   $sql = "select * from sw_goods order by goods_id desc ".$page_obj->limit;   $info = $goods->query($sql);   //④获取页码列表   $pagelist = $page_obj->fpage(array(3,4,5,6,7,8));   //分配   $this->assign('pagelist',$pagelist);   $this->assign('info',$info);   $this->display();  }

前台显示代码

<{$pagelist}>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:

  • thinkPHP多表查询及分页功能实现方法示例
  • thinkPHP分页功能实例详解
  • thinkphp实现分页显示功能
  • thinkphp分页实现效果
  • Thinkphp3.2.3分页使用实例解析
  • thinkphp3.2.3 分页代码分享
  • ThinkPHP3.2.3实现分页的方法详解
  • thinkPHP中分页用法实例分析
  • thinkphp分页集成实例


  • 上一条:
    ThinkPHP实现简单登陆功能
    下一条:
    ThinkPHP实现附件上传功能
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • thinkphp + mongodb项目中数据加载慢问题分析及解决(0个评论)
    • thinkphp6框架中封装redis操作类(0个评论)
    • thinkphp6框架中实现定时任务功能流程步骤(0个评论)
    • Thinkphp5.1框架中实现Session+Redis会话共享流程步骤(0个评论)
    • TP5框架版本5.0.10安全漏洞根据官方补丁修复,也是本站安全漏洞修复(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-12
    • 2018-01
    • 2018-02
    • 2020-03
    • 2021-07
    • 2021-12
    • 2022-05
    • 2022-06
    • 2022-09
    • 2023-01
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客