<? php /* ***********************************************************************************************Description 设置分页字符串,特色:提供灵活的分页方式,而业可以设置上下页图片Author Fyini(老千)QICQ 303590170Version 0.1测试方法 <?php $test=new Pages(234,$_GET['p'],5); echo $test->disp(); ?>*********************************************************************************************** */ class Pages{ var $disp_be_switch ; // 是否显示第一页和最后一页 var $disp_result_number ; // 每页显示的记录数 var $pagesNum ; // 总页数 var $dispPagesNum ; // 显示页数 var $currentPage ; // 当前页 var $disp_type = array ( 1 => array ( array ( ' <<front ' , ' next>> ' ) , ' ┈ ' , array ( ' <font color=red>[ ' , ' ]</font> ' )) , 2 => array ( array ( ' <<front ' , ' Next>> ' ) , ' … ' , array ( ' <font color=red>〖 ' , ' 〗</font> ' )) , 3 => array ( array ( ' <<front ' , ' next>> ' ) , ' ┈ ' , array ( ' [ ' , ' ] ' )) , 4 => array ( array ( ' <<front ' , ' next>> ' ) , ' ┈ ' , array ( ' 〖 ' , ' 〗 ' )) , 5 => array ( array ( ' << ' , ' >> ' ) , ' ┈ ' , array ( ' [ ' , ' ] ' )) , 6 => array ( array ( ' << ' , ' >> ' ) , ' ┈ ' , array ( ' <font color=red>[ ' , ' ]</font> ' )) ); // 默认的几种样式 /* * @desc 构造函数,给定:总记录数,当前页数,每页显示的记录数,分页样式0-5,是否绍终显示第一页和最后一页 @param int $resultNumber 总记录数 @param int $current 当前页数 @param int $rowNum 每页显示的记录数 @param int $dispNum 活动页数 @param int $type 分页样式0-5 @param boolean $be_switch 是否绍终显示第一页和最后一页 @return void */ function Pages( $resultNumber , $current , $rowNum , $dispNum = 5 , $type = 6 , $be_switch = false ){ if ( $type > 6 || $type < 0 ) $type = 6 ; $this -> pagesNum = ceil ( $resultNumber / $rowNum ); // 总页数 $this -> currentPage = $current ; // 当前页数 $this -> disp_result_number = $rowNum ; // 每页显示的记录数 $this -> dispPagesNum = $dispNum ; // 显示的活动页数 $this -> disp_type = $this -> disp_type[ $type ]; // 分页的样式 $this -> disp_be_switch = $be_switch ; // 是否显示第一页和最后一页 } /* * @desc 设置自己的样式时使用的函数 @param array $previus_and_next 前一页,下一页的样式 @param array $height_light 当前页高亮显示 @param string $over 太多页时中间的省略部分 @return void */ function setOtherDispParam( $previous_and_next , $height_light , $over ){ $this -> disp_type = null ; $this -> disp_type = array ( $previous_and_next , $over , $height_light ); } /* * @desc 输出内容 @param string $param 分页参数 @param string $pageurl URL地址 @return string */ function disp( $param = ' p ' , $pageurl = '' ){ global $HTTP_SERVER_VARS ; if ( ! $pageurl ) $pageurl = " http:// " . $HTTP_SERVER_VARS [ ' HTTP_HOST ' ] . $_SERVER [ ' PHP_SELF ' ]; // 当前文件路径 $middle = (int)( $this -> dispPagesNum / 2 ); // 中间数 $startRow = 1 ; // 开始下标 $endRow = $this -> pagesNum; // 结束下标 $previous = false ; // 有前导 $next = false ; // 有后导 if ( $this -> pagesNum > $this -> dispPagesNum){ // 总页数大于总显示页数,说明使用 << >> 符号 if ( $this -> currentPage > $middle + 1 ){ // 当前页大于总显示的一半+1,说明使用 << 符号 $previous = true ; // 将前导设置为有 $startRow = ( $this -> currentPage < $this -> pagesNum - $middle ) ? $this -> currentPage - $middle : ( $this -> pagesNum - $this -> dispPagesNum) + 1 ; // 将开始下标设置成:[当前页数 < 总页数 - 中间页数] ? 是[ 当前页-中间页 ] : 否[ 总页数 - 显示宽度 ]+1 } else // 没有前导 { $startRow = 1 ; // 设置下标为第一页 } if ( $this -> currentPage < $this -> pagesNum - $middle ){ // 当前页小于总页数的一半,说明使用 >>符号 $next = true ; // 将后导设置为有 $endRow = ( $startRow < $middle ) ? $endRow = $this -> dispPagesNum : $this -> currentPage + $middle ; // 将结束下标设置成:[开结行 < 中间行] ? 是[显示宽度] : 否[当前页 + 中间行] } else // 没有后导 { $endRow = $this -> pagesNum; // 将结束行设置成总页数 } } $out = '' ; // 用于输出的字串 for ( $i = $startRow ; $i < $endRow + 1 ; $i ++ ){ if ( $this -> currentPage == $i ){ $out .= " {$this->disp_type[2][0]}{$i}{$this->disp_type[2][1]} " ; } else { $out .= " <a href='{$pageurl}?{$param}={$i}'>{$i}</a> " ; } } $previousPage = $this -> currentPage - 1 ; // 上一页 $nextPage = $this -> currentPage + 1 ; // 下一页 if ( $previous ){ // 如果有前导,加上前导 if ( $this -> disp_be_switch) // 是否显示最前页 $out = " <a href='{$pageurl}?{$param}={$previousPage}'>{$this->disp_type[0][0]}</a> <a href='{$pageurl}?{$param}=1'>1</a> {$this->disp_type[1]} {$out} " ; else $out = " <a href='{$pageurl}?{$param}={$previousPage}'>{$this->disp_type[0][0]}</a> {$this->disp_type[1]} {$out} " ; } if ( $next ){ // 如果有后导,加上后导 if ( $this -> disp_be_switch) // 是否显示最后页 $out .= " {$this->disp_type[1]} <a href='{$pageurl}?{$param}={$this->pagesNum}'>{$this->pagesNum}</a> <a href='{$pageurl}?{$param}={$nextPage}'>{$this->disp_type[0][1]}</a> " ; else $out .= " {$this->disp_type[1]} <a href='{$pageurl}?{$param}={$nextPage}'>{$this->disp_type[0][1]}</a> " ; } return $out ; } /* * @desc 获得总页数 @return int */ function getCountPages(){ return $this -> dispPagesNum; } /* * @desc 获得总记录数 @return int */ function getCountResult(){ return $this -> disp_result_number; } /* * @desc 获得当前页的开始记录数 @return int */ function getCurrentPageStart(){ return $this -> getCurrentPageEnd() - $this -> disp_result_number; } /* * @desc 获得当前页的结束记录数 @return int */ function getCurrentPageEnd(){ return $this -> currentPage * $this -> disp_result_number; } /* * @decs 获得当前页的页号 @return int */ function getCurrentPageNumber(){ return $this -> currentPage; }} ?>