巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
赞助文档Help

ThinkPHP完成分页功效

一佰互联网站建造(www.taishanly.com) 宣布日期 2020-04-25 14:41:33 阅读数: 98

前几篇(上传,缩略图,考证码,主动考证表单)文章先容的功效完成都是基于ThinkPHP框架封装好的类停止完成的,以是此次本身写一个分页类在框架中利用。

起首在根目次建一个Tools文件夹,在Tools文件夹下建Page.class.php类文件,如许今后自界说的东西类都可放在Tools文件夹下。

此类封装有以下函数:取得要求地点,起头页,从哪一条显现,竣事页 从哪一条竣事,页码列表(首页超链接,上一页,页码数字列表超链接,下一页,尾页,跳转),对分页充足利用!

上面是Page.class.php代码

<?php
//定名空间的称号与下级目次tools分歧
//缘由:以后Page.class.php类文件会被主动加载机制引入
//   在引入的同时会把"tools"变为文件的下级目次,进而取得该Page类文件
namespace Tools;

class Page {
  private $total; //数据表中总记实数
  private $listRows; //每页显现行数
  private $limit;
  private $uri;  //以后链接URL
  private $pageNum; //页数
  private $config=array("header"=>"个记实", "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.="  <a href="{$this->uri}&page=1">{$this->config["first"]}</a>  ";

    return $html;
  }

  //上一页
  private function prev(){
    $html = "";
    if($this->page==1)
      $html.="";
    else
      $html.="  <a href="{$this->uri}&page=".($this->page-1)."">{$this->config["prev"]}</a>  ";

    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.=" <a href="{$this->uri}&page={$page}">{$page}</a> ";

    }
  
    $linkPage.=" {$this->page} ";
    

    for($i=1; $i<=$inum; $i++){
      $page=$this->page+$i;
      if($page<=$this->pageNum)
        $linkPage.=" <a href="{$this->uri}&page={$page}">{$page}</a> ";
      else
        break;
    }

    return $linkPage;
  }

  //下一页
  private function next(){
    $html = "";
    if($this->page==$this->pageNum)
      $html.="";
    else
      $html.="  <a href="{$this->uri}&page=".($this->page+1)."">{$this->config["next"]}</a>  ";

    return $html;
  }

  //尾页
  private function last(){
    $html = "";
    if($this->page==$this->pageNum)
      $html.="";
    else
      $html.="  <a href="{$this->uri}&page=".($this->pageNum)."">{$this->config["last"]}</a>  ";

    return $html;
  }

  //跳转
  private function goPage(){
    return "  <input type="text" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>".$this->pageNum.")?".$this->pageNum.":this.value;location="".$this->uri."&page="+page+""}" value="".$this->page."" style="width:25px"><input type="button" value="GO" onclick="javascript:var page=(this.previousSibling.value>".$this->pageNum.")?".$this->pageNum.":this.previousSibling.value;location="".$this->uri."&page="+page+""">  ";
  }

  //页码列表
  function fpage($display=array(0,1,2,3,4,5,6,7,8)){
    $html[0]="  共有<b>{$this->total}</b>{$this->config["header"]}  ";
    $html[1]="  每页显现<b>".($this->end()-$this->start()+1)."</b>条,本页<b>{$this->start()}-{$this->end()}</b>条  ";
    $html[2]="  <b>{$this->page}/{$this->pageNum}</b>页  ";
    
    $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 ToolsPage($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}>

以上便是本文的全数内容,但愿对大师的进修有所赞助,也但愿大师多多撑持网页设想。

一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。

相干消息more

30
04月
php preg_filter履行一个正则表

preg_filter (PHP 5 >= 5.3.0) preg_filter — 履行一个正则抒发式搜刮和替代 mixed pre... >>概况

15
04月
现在QQ已18岁了 一起生长有哪些域名相伴

高端网站扶植专业公司http://www.taishanly.com重庆一佰互联收集手艺无限公司 供给域名空间、网站扶植、网站宣扬、办理体系开辟等服... >>概况

14
04月
重庆建网站_单页网站优化指南

重庆建网站_单页网站优化指南 1、简练的页面结果 良多单页面网站的图片比拟多,比方像减肥类的产物山西武警病院,淘宝客的网站良多都是图片占... >>概况

22
11月
中国假造主机行业市场支出环境近况及预期

中国假造主机行业市场支出环境近况及预期按照艾瑞市场征询(iResearch)推出的《2004年中国域名假造主机研讨报告》数据显现,2004年... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站