PHP24 自定义分页类
分页类的定义
<?php /** * Class MyPage 分页类 * @package core */ class MyPage { private $totalCount; //数据表中总记录数 private $pageSize; //每页显示行数 private $limit;//sql分页limit子句 private $uri; private $totalPage; //页数 private $config=array('header'=>"个记录", "prev"=>"上一页", "next"=>"下一页", "first"=>"首 页", "last"=>"尾 页"); private $linkNum=8;//分页相关按钮数目设置 /* * $total * $listRows */ public function __construct($totalCount, $pageSize=10, $pageURI=""){ $this->totalCount=$totalCount; $this->pageSize=$pageSize; $this->uri=$this->getUri($pageURI); $this->pageIndex=!empty($_GET["pageIndex"]) ? $_GET["pageIndex"] : 1; $this->totalPage=ceil($this->totalCount/$this->pageSize); $this->limit=$this->setLimit(); } private function setLimit(){ return "Limit ".($this->pageIndex-1)*$this->pageSize.", {$this->pageSize}"; } private function getUri($pageURI){ $url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"], '?')?'':"?").$pageURI; $parse=parse_url($url); if(isset($parse["query"])){ parse_str($parse['query'],$params); unset($params["pageIndex"]); $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->totalCount==0) return 0; else return ($this->pageIndex-1)*$this->pageSize+1; } private function end(){ return min($this->pageIndex*$this->pageSize,$this->totalCount); } private function first(){ $html = ""; if($this->pageIndex==1) $html.=''; else $html.=" <a href='{$this->uri}&pageIndex=1'>{$this->config["first"]}</a> "; return $html; } private function prev(){ $html = ""; if($this->pageIndex==1) $html.=''; else $html.=" <a href='{$this->uri}&pageIndex=".($this->pageIndex-1)."'>{$this->config["prev"]}</a> "; return $html; } private function pageList(){ $linkPage=""; $inum=floor($this->linkNum/2); for($i=$inum; $i>=1; $i--){ $pageIndex=$this->pageIndex-$i; if($pageIndex<1) continue; $linkPage.=" <a href='{$this->uri}&pageIndex={$pageIndex}'>{$pageIndex}</a> "; } $linkPage.=" {$this->pageIndex} "; for($i=1; $i<=$inum; $i++){ $pageIndex=$this->pageIndex+$i; if($pageIndex<=$this->totalPage) $linkPage.=" <a href='{$this->uri}&pageIndex={$pageIndex}'>{$pageIndex}</a> "; else break; } return $linkPage; } private function next(){ $html = ""; if($this->pageIndex==$this->totalPage) $html.=''; else $html.=" <a href='{$this->uri}&pageIndex=".($this->pageIndex+1)."'>{$this->config["next"]}</a> "; return $html; } private function last(){ $html = ""; if($this->pageIndex==$this->totalPage) $html.=''; else $html.=" <a href='{$this->uri}&pageIndex=".($this->totalPage)."'>{$this->config["last"]}</a> "; return $html; } private function goPage(){ return ' <input type="text" onkeydown="javascript:if(event.keyCode==13){var pageIndex=(this.value>'.$this->totalPage.')?'.$this->totalPage.':this.value;location=\''.$this->uri.'&pageIndex=\'+pageIndex+\'\'}" value="'.$this->pageIndex.'" style="width:25px"><input type="button" value="GO" onclick="javascript:var pageIndex=(this.previousSibling.value>'.$this->totalPage.')?'.$this->totalPage.':this.previousSibling.value;location=\''.$this->uri.'&pageIndex=\'+pageIndex+\'\'"> '; } function fpage($display=array(0,1,2,3,4,5,6,7,8)){ $html[0]=" 共有<b>{$this->totalCount}</b>{$this->config["header"]} "; $html[1]=" 每页显示<b>".($this->end()-$this->start()+1)."</b>条,本页<b>{$this->start()}-{$this->end()}</b>条 "; $html[2]=" <b>{$this->pageIndex}/{$this->totalPage}</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; } }
在控制器中使用分页类
<?php namespace application\admin\controllers; use application\admin\models\GbmgrModel; use core\mybase\Controller; class PageController extends Controller { public function index() { $this->display(); } /**分页留言数据*/ public function listgb() { $pageIndex = isset($_GET['pageIndex']) ? $_GET['pageIndex'] : 1; $pageSize = isset($_GET['pageSize']) ? $_GET['pageSize'] : 10; $like = isset($_GET['like']) ? $_GET['like'] : null; $gm = new GbmgrModel(); //获得符合条件的总记录数 $totalCount = $gm->count($like); //获得分页数据 $list = $gm->list($pageIndex, $pageSize, $like); $url = "index.php?g=admin&c=page&a=listgb&pageIndex={pageIndex}"; $myPage=null; if ($totalCount > $pageSize) {//总记录数大于每页显示数,显示分页 $myPage = new \core\MyPage($totalCount, $pageSize, $pageIndex, $url, 2); } $this->assign('list',$list); $this->assign("myPage",$myPage); $this->display(); } }
视图定义
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Page类分页</title> <link href="<?php echo __ADMIN_CSS__;?>bootstrap.min.css" rel="stylesheet"> <!--分页链接标签样式--> <style type="text/css"> * { margin: 0; padding: 0; } #page { height: 40px; padding: 20px 0px; } #page a { display: block; float: left; margin-right: 10px; padding: 2px 12px; height: 24px; border: 1px #cccccc solid; background: #fff; text-decoration: none; color: #808080; font-size: 12px; line-height: 20px; } #page a:hover { color: #077ee3; border: 1px #077ee3 solid; } #page a.cur { border: none; background: #077ee3; color: #fff; } #page p { float: left; padding: 2px 12px; font-size: 12px; height: 24px; line-height: 20px; color: #bbb; border: 1px #ccc solid; background: #fcfcfc; margin-right: 8px; } #page p.pageRemark { border-style: none; background: none; margin-right: 0px; padding: 4px 0px; color: #666; } #page p.pageRemark b { color: red; } #page p.pageEllipsis { border-style: none; background: none; padding: 4px 0px; color: #808080; } </style> </head> <body> <div class="content col-sm-8"> <table id="selectTable" class="table table-striped"> <tr> <th>编号</th> <th>姓名</th> <th>邮箱</th> <th>电话</th> <th>留言</th> </tr> <?php foreach($this->data['list'] as $value){ echo "<tr>"."<td>".$value['id']. "</td>"."<td>".$value['uname']. "</td>"."<td>".$value['uemail']. "</td>"."<td>".$value['uphone']. "</td>"."<td>".$value['umessage']. "</td>"."</tr>"; } ?> </table> <?php echo $this->data['myPage']->outPages();?> </div> </body> </html>
本博客文章未经许可,禁止转载和商业用途!
如有疑问,请联系: 2083967667@qq.com