<?php 2: #=============================================== 3: # 名 称: Page v1.1 分页 4: # 文 件: Page.class.php 5: # 作 者: liu21st, liu21st@126.com 6: # 说 明: 实现分页功能 7: # 修 改: 2003-12-23 加firstRow的溢出判断,溢出时显示最后一页 8: #------------------------------------------------------------------------------------9: 10: class Page { 11: var $firstRow = 0 ; // 起始行 12: var $listRows = 0 ; // 每页显示列表行数 13: var $parameter = ""; // 页数跳转时要带的参数 14: var $totalPages = 0 ; // 总页数 15: var $totalRows = 0 ; // 总行数 16: var $nowPage = 0 ; // 当前页数 17: var $showPageJump = True; // 是否显示跳到第几页 18: var $coolPages = 0 ; // 分页的栏的总页数 19: var $rollPage = 5; // 分页栏每页显示的页数 20: 21: /*-------------------------------------------------------------------------- 22: 功能:显示分页信息第 x 页 共 x 页 << < 6 7 8 9 10 > >> 23: -----------------------------------------------------------------------------*/ 24: function prompt() { 25: if(0 == $this->totalRows) { 26: return; 27: } 28: $this->totalPages=ceil($this->totalRows/$this->listRows); //总页数 29: $this->coolPages = ceil($this->totalPages/$this->rollPage); 30: if ( $this->firstRow >= $this->totalRows ) { // 2003-12-30 17:18:29 kinger modified 31: $this->nowPage = $this->totalPages; 32: $this->firstRow = ($this->totalPages-1)*$this->listRows; 33: } else { 34: $this->nowPage=floor($this->firstRow/$this->listRows+1); //当前页号 35: } 36: $nowCoolPage = ceil($this->nowPage/$this->rollPage); 37: 38: // << < > >> 39: if($nowCoolPage == 1){ 40: $theFirst = ""; 41: $prePage = ""; 42: }else{ 43: $preRow = ($this->rollPage*($nowCoolPage-1)-1)*$this->listRows; 44: $prePage = "<a href='?firstRow=$preRow&totalRows=$this->totalRows&$this->parameter'><</a>"; 45: $theFirst = "<a href='?firstRow=0&totalRows=$this->totalRows&$this->parameter'><<</a>"; 46: } 47: if($nowCoolPage == $this->coolPages){ 48: $nextPage = ""; 49: $theEnd=""; 50: }else{ 51: $nextRow = ($nowCoolPage*$this->rollPage)*$this->listRows; 52: $theEndRow = ($this->totalPages-1)*$this->listRows; 53: $nextPage = "<a href='?firstRow=$nextRow&totalRows=$this->totalRows&$this->parameter'>></a>"; 54: $theEnd = "<a href='?firstRow=$theEndRow&totalRows=$this->totalRows&$this->parameter'>>></a>"; 55: } 56: // 1 2 3 4 5 57: $linkPage = ""; 58: for($i=1;$i<=$this->rollPage;$i++){ 59: $page=($nowCoolPage-1)*$this->rollPage+$i; 60: $rows=($page-1)*$this->listRows; 61: if($page!=$this->nowPage){ 62: if($page<=$this->totalPages){ 63: $linkPage .= " <a href='?firstRow=$rows&totalRows=$this->totalRows&$this->parameter'>".$page."</a>"; 64: }else{ 65: break; 66: } 67: }else{ 68: if($this->totalPages != 1){ 69: $linkPage .= " [<b>".$page."</b>]"; 70: } 71: } 72: } 73: $pageStr = "共 $this->totalPages 页 ".$theFirst." ".$prePage." ".$linkPage." ".$nextPage." ".$theEnd; 74: return $pageStr; 75: } 76: /*----------------------------------------------------------------------- 77: 使用举例。 78: -------------------------------------------------------------------- 79: $page = new Page(); 80: if ($totalRows){ 81: $page->totalRows=$totalRows; 82: }else{ 83: //此处为计算查询个数,视不同的数据库方式有所不同 84: $page->totalRows=$db->count($db->select("user","*");); 85: } 86: $page->listRows="2"; 87: if ($firstRow){ 88: $page->firstRow=$firstRow; 89: }else{ 90: $page->firstRow=0; 91: } 92: $db->select("user","*","","","$page->firstRow,$page->listRows"); 93: while($db->nextRecord()) { 94: echo $db->record[id]." "; 95: echo $db->record[name]." "; 96: echo $db->record[age]." "; 97: echo "<br>"; 98: } 99: $pager=$page->prompt(); 100: -------------------------------------------------------------------------------*/ 101: } 102: ?>
下载地址 |