yuesha
 thinkphp5两种分页方法 

use \org\until\Page; public function page(){ //法一:thinkphp5自带分页 $list = Db::name(\'article\')->paginate(5,true); $page = $list->render(); //法二:使用扩展类库分页 $count = Db::name(\'article\')->count(); $p = new Page($count, 5); $p->setConfig(\'prev\', \'上一页\'); $p->setConfig(\'header\', \'篇文章\'); $p->setConfig(\'first\', \'首 页\'); $p->setConfig(\'last\', \'末 页\'); $p->setConfig(\'next\', \'下一页\'); $temp_str = "%first%%upPage%%prePage%%linkPage%%nextPage%%downPage%%end%<select name=\'select\' onChange=\'javascript:window.location.href=(this.options[this.selectedIndex].value);\'>%allPage%</select>共<font color=\'#CD4F07\'><b>%totalRow%</b></font>篇 5篇/每页"; $p->setConfig(\'theme\', $temp_str); //数据查询 $list = Db::name(\'article\')->order(\'istop desc,addtime desc\')->limit($p->firstRow . \',\' . $p->listRows)->select(); echo Db::name(\'article\')->getLastSql(); $page = $p->show(); //封装变量 $this->assign(\'page\', $page); $this->assign(\'list\', $list); // 渲染模板输出 return $this->fetch(); } 扩展page类 <?php namespace org\until; class Page { // 起始行数 public $firstRow ; // 列表每页显示行数 public $listRows ; // 页数跳转时要带的参数 public $parameter ; // 分页总页面数 protected $totalPages ; // 总行数 protected $totalRows ; // 当前页数 public $nowPage ; // 分页的栏的总页数 protected $coolPages ; // 分页栏每页显示的页数 protected $rollPage ; //默认分页变量 protected $varPage; // 分页显示定制 protected $config = array(\'header\'=>\'条记录\',\'prev\'=>\'上一页\',\'next\'=>\'下一页\',\'first\'=>\'第一页\',\'last\'=>\'最后一页\',\'theme\'=>\' %totalRow% %header% %nowPage%/%totalPage% 页 %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%\'); /** +---------------------------------------------------------- * 架构函数 +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param array $totalRows 总的记录数 * @param array $listRows 每页显示记录数 * @param array $parameter 分页跳转的参数 +---------------------------------------------------------- */ public function __construct($totalRows,$listRows=15,$parameter=\'\',$var_page= \'page\') { $this->varPage = $var_page; $this->totalRows = $totalRows; $this->parameter = $parameter; $this->rollPage = 5; $this->listRows = $listRows; $this->totalPages = ceil($this->totalRows/$this->listRows); //总页数 $this->coolPages = ceil($this->totalPages/$this->rollPage); $this->nowPage = !empty($_GET[$this->varPage])?$_GET[$this->varPage]:1; if(!empty($this->totalPages) && $this->nowPage>$this->totalPages) { $this->nowPage = $this->totalPages; } $this->firstRow = $this->listRows*($this->nowPage-1); } public function setConfig($name,$value) { if(isset($this->config[$name])) { $this->config[$name] = $value; } } /** +---------------------------------------------------------- * 分页显示输出 +---------------------------------------------------------- * @access public +---------------------------------------------------------- */ public function show() { if(0 == $this->totalRows) return \'\'; $depr = strpos($_SERVER[\'REQUEST_URI\'],\'?\')?\'&\':"?"; $p = $this->varPage; $ext_htm = \'.html\'; $nowCoolPage = ceil($this->nowPage/$this->rollPage); //静态化需要 $url = $_SERVER[\'REQUEST_URI\']; $url = str_ireplace($ext_htm,\'\',$url); $patern = "/[\?|\&]+(".$p."=)[0-9]+/i"; echo $patern; $url = preg_replace($patern,"",$url); if($this->parameter != \'\'){ $url = $url.(strpos($_SERVER[\'REQUEST_URI\'],\'?\')?\'\':"&").$this->parameter; } $depr = strpos($url,\'?\')?\'&\':"?"; /*$parse = parse_url($url); if(isset($parse[\'query\'])) { parse_str($parse[\'query\'],$params); unset($params[$p]); $url = $parse[\'path\'].\'?\'.http_build_query($params); }*/ //上下翻页字符串 $upRow = $this->nowPage-1; $downRow = $this->nowPage+1; if ($upRow>0){ $upPage="<a rel=\'external\' href=\'".$url.$depr.$p."=$upRow{$ext_htm}\'>".$this->config[\'prev\']."</a>\n"; }else{ $upPage="<span>".$this->config[\'prev\']."</span>\n"; } if ($downRow <= $this->totalPages){ $downPage="<a rel=\'external\' href=\'".$url.$depr.$p."=$downRow{$ext_htm}\'>".$this->config[\'next\']."</a>\n"; }else{ $downPage="<span>".$this->config[\'next\']."</span>\n"; } // << < > >> if($nowCoolPage == 1){ $theFirst = ""; $prePage = ""; }else{ $preRow = $this->nowPage-$this->rollPage; $prePage = "<a href=\'".$url.$depr.$p."=$preRow\' >上".$this->rollPage."页</a>"; $theFirst = "<a href=\'".$url.$depr.$p."=1\' >".$this->config[\'first\']."</a>"; } if($nowCoolPage == $this->coolPages){ $nextPage = ""; $theEnd=""; }else{ $nextRow = $this->nowPage+$this->rollPage; $theEndRow = $this->totalPages; $nextPage = "<a href=\'".$url.$depr.$p."=$nextRow\' >下".$this->rollPage."页</a>"; $theEnd = "<a href=\'".$url.$depr.$p."=$theEndRow\' >".$this->config[\'last\']."</a>"; } // 1 2 3 4 5 $linkPage = ""; for($i=1;$i<=$this->rollPage;$i++){ $page=($nowCoolPage-1)*$this->rollPage+$i; if($page!=$this->nowPage){ if($page<=$this->totalPages){ $linkPage .= "<a rel=\'external\' href=\'".$url.$depr.$p."=$page{$ext_htm}\'>".$page."</a>\n"; }else{ break; } }else{ if($this->totalPages != 1){ $linkPage .="<span>".$page."</span>\n"; } } } //下拉选择分页效果 $allPage = ""; for($i=1;$i<=$this->rollPage;$i++){ $page=($nowCoolPage-1)*$this->rollPage+$i; if($page!=$this->nowPage){ if($page<=$this->totalPages){ $allPage .="<option value=\'".$url.$depr.$p."=$page{$ext_htm}\'>".$page."</option>"; }else{ break; } }else{ $allPage .="<option value=\'".$url.$depr.$p."=$page{$ext_htm}\' selected=\'selected\'>".$page."</option>"; } } $pageStr = str_replace( array(\'%header%\',\'%nowPage%\',\'%totalRow%\',\'%totalPage%\',\'%upPage%\',\'%downPage%\',\'%first%\',\'%prePage%\',\'%linkPage%\',\'%allPage%\',\'%nextPage%\',\'%end%\'), array($this->config[\'header\'],$this->nowPage,$this->totalRows,$this->totalPages,$upPage,$downPage,$theFirst,$prePage,$linkPage,$allPage,$nextPage,$theEnd),$this->config[\'theme\']); return $pageStr; } } ?>

 

分类:

技术点:

相关文章: