1.分页源码
1 <?php 2 class PageView{ 3 /**页码**/ 4 public $pageNo = 1; 5 /**页大小**/ 6 public $pageSize = 20; 7 /**共多少页**/ 8 public $pageCount = 0; 9 /**总记录数**/ 10 public $totalNum = 0; 11 /**偏移量,当前页起始行**/ 12 public $offSet = 0; 13 /**每页数据**/ 14 public $pageData = array(); 15 16 /**是否有上一页**/ 17 public $hasPrePage = true; 18 /**是否有下一页**/ 19 public $hasNextPage = true; 20 21 public $pageNoList = array(); 22 23 public $jsFunction ='jsFunction'; 24 /** 25 * 26 * @param unknown_type $count 总行数 27 * @param unknown_type $size 分页大小 28 * @param unknown_type $string 29 */ 30 public function __construct($count=0, $size=20,$pageNo=1,$pageData =array(),$jsFunction='jsFunction'){ 31 32 $this->totalNum = $count;//总记录数 33 $this->pageSize = $size;//每页大小 34 $this->pageNo = $pageNo; 35 //计算总页数 36 $this->pageCount = ceil($this->totalNum/$this->pageSize); 37 $this->pageCount = ($this->pageCount<=0)?1:$this->pageCount; 38 //检查pageNo 39 $this->pageNo = $this->pageNo == 0 ? 1 : $this->pageNo; 40 $this->pageNo = $this->pageNo > $this->pageCount? $this->pageCount : $this->pageNo; 41 42 //计算偏移 43 $this->offset = ( $this->pageNo - 1 ) * $this->pageSize; 44 //计算是否有上一页下一页 45 $this->hasPrePage = $this->pageNo == 1 ?false:true; 46 47 $this->hasNextPage = $this->pageNo >= $this->pageCount ?false:true; 48 49 $this->pageData = $pageData; 50 $this->jsFunction = $jsFunction; 51 52 } 53 /** 54 * 分页算法 55 * @return 56 */ 57 private function generatePageList(){ 58 $pageList = array(); 59 if($this->pageCount <= 9){ 60 for($i=0;$i<$this->pageCount;$i++){ 61 array_push($pageList,$i+1); 62 } 63 }else{ 64 if($this->pageNo <= 4){ 65 for($i=0;$i<5;$i++){ 66 array_push($pageList,$i+1); 67 } 68 array_push($pageList,-1); 69 array_push($pageList,$this->pageCount); 70 71 }else if($this->pageNo > $this->pageCount - 4){ 72 array_push($pageList,1); 73 74 array_push($pageList,-1); 75 for($i=5;$i>0;$i--){ 76 array_push($pageList,$this->pageCount - $i+1); 77 } 78 }else if($this->pageNo > 4 && $this->pageNo <= $this->pageCount - 4){ 79 array_push($pageList,1); 80 array_push($pageList,-1); 81 82 array_push($pageList,$this->pageNo -2); 83 array_push($pageList,$this->pageNo -1); 84 array_push($pageList,$this->pageNo); 85 array_push($pageList,$this->pageNo + 1); 86 array_push($pageList,$this->pageNo + 2); 87 88 array_push($pageList,-1); 89 array_push($pageList,$this->pageCount); 90 91 } 92 } 93 return $pageList; 94 } 95 96 /*** 97 * 创建分页控件 98 * @param 99 * @return String 100 */ 101 public function echoPageAsDiv(){ 102 $pageList = $this->generatePageList(); 103 104 $pageString ="<div class='pagination'><div class='page-bottom'>"; 105 106 if(!empty($pageList)){ 107 if($this->pageCount >1){ 108 if($this->hasPrePage){ 109 $pageString = $pageString ."<a class='page-next' href=\"javascript:" .$this->jsFunction . "(" . ($this->pageNo-1) . ")\">上一页</a>"; 110 } 111 foreach ($pageList as $k=>$p){ 112 if($this->pageNo == $p){ 113 $pageString = $pageString ."<span class='page-cur'>" . $this->pageNo . "</span>"; 114 continue; 115 } 116 if($p == -1){ 117 $pageString = $pageString ."<span class='page-break'>...</span>"; 118 continue; 119 } 120 $pageString = $pageString ."<a href=\"javascript:" .$this->jsFunction . "(" . $p . ")\">" . $p . "</a>"; 121 } 122 123 if($this->hasNextPage){ 124 $pageString = $pageString ."<a class='page-next' href=\"javascript:" .$this->jsFunction . "(" . ($this->pageNo+1) . ")\">下一页</a>"; 125 } 126 127 } 128 } 129 $pageString = $pageString .("</div></div>"); 130 return $pageString; 131 } 132 } 133 134 ?>
2.php调用
1 $pageNo = $_GET['pageNo']; 2 if(empty($pageNo)){ 3 $pageNo = 1; 4 } 5 //分页数据 6 $pageData = News::getNewsPage($pageNo,$pageSize); 7 //取得总行数 8 $count = News::getNewsCount(); 9 //创建分页器 10 $p = new PageView($count['0']['TOTAL'],$pageSize,$pageNo,$pageData); 11 //生成页码 12 $pageViewString = $p->echoPageAsDiv();
3.效果图: