|
1、分页类
<?php
class PageView{
/**页码**/
public $pageNo = 1;
/**页大小**/
public $pageSize = 20;
/**共多少页**/
public $pageCount = 0;
/**总记录数**/
public $totalNum = 0;
/**偏移量,当前页起始行**/
public $offSet = 0;
/**每页数据**/
public $pageData = array();
/**是否有上一页**/
public $hasPrePage = true;
/**是否有下一页**/
public $hasNextPage = true;
public $pageNoList = array();
public $pageUrl = '';
public $parameterArray = null;
/**
*
* @param unknown_type $count 总行数
* @param unknown_type $size 分页大小
* @param unknown_type $string
*/
/**
*
* @param $count总行数
* @param $size分页数【默认20】
* @param $pageNo当前页
* @param $pageData分页数据
* @param $pageUrl分页链接url,1、普通url链接 2、js页面跳转 格式 javascript:funcname
* @param $parameterArray分页url参数 格式array('id'=>1,'type'=>'add')
*/
public function __construct($count=0, $size=20,$pageNo=1,$pageData =array(),$pageUrl='',$parameterArray=null){
$this->totalNum = $count;//总记录数
$this->pageSize = $size;//每页大小
$this->pageNo = $pageNo;
//计算总页数
$this->pageCount = ceil($this->totalNum/$this->pageSize);
$this->pageCount = ($this->pageCount<=0)?1:$this->pageCount;
//检查pageNo
$this->pageNo = $this->pageNo == 0 ? 1 : $this->pageNo;
$this->pageNo = $this->pageNo > $this->pageCount? $this->pageCount : $this->pageNo;
//计算偏移
$this->offset = ( $this->pageNo - 1 ) * $this->pageSize;
//计算是否有上一页下一页
$this->hasPrePage = $this->pageNo == 1 ?false:true;
$this->hasNextPage = $this->pageNo >= $this->pageCount ?false:true;
$this->pageData = $pageData;
$this->pageUrl = $pageUrl;
$this->parameterArray = $parameterArray;
}
/**
* 分页算法
* @return
*/
private function generatePageList(){
$pageList = array();
if($this->pageCount <= 9){
for($i=0;$i<$this->pageCount;$i++){
array_push($pageList,$i+1);
}
}else{
if($this->pageNo <= 4){
for($i=0;$i<5;$i++){
array_push($pageList,$i+1);
}
array_push($pageList,-1);
array_push($pageList,$this->pageCount);
}else if($this->pageNo > $this->pageCount - 4){
array_push($pageList,1);
array_push($pageList,-1);
for($i=5;$i>0;$i--){
array_push($pageList,$this->pageCount - $i+1);
}
}else if($this->pageNo > 4 && $this->pageNo <= $this->pageCount - 4){
array_push($pageList,1);
array_push($pageList,-1);
array_push($pageList,$this->pageNo -2);
array_push($pageList,$this->pageNo -1);
array_push($pageList,$this->pageNo);
array_push($pageList,$this->pageNo + 1);
array_push($pageList,$this->pageNo + 2);
array_push($pageList,-1);
array_push($pageList,$this->pageCount);
}
}
return $pageList;
}
/***
* 创建分页控件
* @param
* @return String
*/
public function echoPageAsDiv(){
$pageList = $this->generatePageList();
$pageString ="<div class='pagination'><div class='page-bottom'>";
if(!empty($pageList)){
if($this->pageCount >1){
if($this->hasPrePage){
$pageString = $this->spellUrl($pageString,$this->pageNo-1,'上一页');
}
foreach ($pageList as $k=>$p){
if($this->pageNo == $p){
$pageString = $pageString ."<span class='page-cur'>" . $this->pageNo . "</span>";
continue;
}
if($p == -1){
$pageString = $pageString ."<span class='page-break'>...</span>";
continue;
}
// $pageString = $pageString ."<a href=\"javascript:" .$this->jsFunction . "(" . $p . ")\">" . $p . "</a>";
$pageString = $this->spellUrl($pageString,$p,$p);
}
if($this->hasNextPage){
$pageString = $this->spellUrl($pageString,$this->pageNo+1,'下一页');
}
}
}
$pageString = $pageString .("</div></div>");
return $pageString;
}
public function spellParameterUrl($parameterArray,$isJs= false){
$parameterUrl = '';
if(empty($parameterArray)){
return $parameterUrl;
}
foreach ($parameterArray as $key=>$value){
if($isJs){
$parameterUrl .= ",'$value'";
}else{
$parameterUrl .="&$key=$value";
}
}
return $parameterUrl;
}
public function spellUrl($pageString,$pageNumber,$pageText){
$isJs = preg_match('/javascript/',$this->pageUrl);
if($isJs){
$parameterUrl = $this->spellParameterUrl($this->parameterArray,true);
$pageUrl = $this->pageUrl.'('.$pageNumber.$parameterUrl.')';
$pageString = $pageString ."<a href=\"$pageUrl\">" . $pageText . "</a>";
}else{
$parameterUrl = $this->spellParameterUrl($this->parameterArray);
$pageUrl = $this->pageUrl.'?page='.$pageNumber.$parameterUrl;
$pageString = $pageString ."<a href=\"$pageUrl\">" . $pageText . "</a>";
}
return $pageString;
}
}
?>
2、分页类使用实例代码
<?php
include 'PageView.php';
header("Content-type:text/html;charset=utf-8");
$pageNo = $_GET['page'];
$pageSize = 1;
//分页数据
$pageData = array (array ('id' => 1 ), array ('id' => 2 ), array ('id' => 3 ), array ('id' => 4 ) );
//取得总行数
$count = 21;
$test = array('type'=>1,'name'=>'add');
$pageUrl = '';
$pageUrl = 'javascript:tabPage';
//$pageParameterArray = null;
$pageParameterArray = array('id'=>1,'type'=>'add');
//创建分页器
$p = new PageView ( $count, $pageSize, $pageNo, $pageData ,$pageUrl,$pageParameterArray);
//生成页码
$pageViewString = $p->echoPageAsDiv ();
$pageData = $p->pageData;
echo '<style type="text/css">
<!--
.pagination {font-family: Tahoma;overflow: hidden; padding-top: 12px; text-align: center;}
.pagination-tab { margin-bottom: 20px;}
.pagination a, .pagination .page-cur, .pagination .page-prev_g, .pagination .page-prev, .pagination .page-next, .pagination .page-next_g, .pagination .page-break, .pagination .page-skip {
display: inline-block;font-family: Tahoma,SimSun,Arial; height: 22px;line-height:22px; margin: 0; min-width: 16px;padding: 0 5px; text-align: center; vertical-align: top; white-space: nowrap;text-decoration: none;}
.pagination a, .pagination .page-prev_g, .pagination .page-prev, .pagination .page-next, .pagination .page-next_g, .pagination .page-cur, .pagination .page-break {
border: 1px solid #ed3d83; color:#e9357d; font-weight:bold;}
.pagination a:hover { border: 1px solid #ed3d83;text-decoration: none; background-color:#f95f9d; color:#fff;}
.pagination .page-prev_g, .pagination .page-prev, .pagination .page-next, .pagination .page-next_g { width: 36px; background-image: url(../static/img/page.gif);}
.pagination .page-prev { background-position: -0px -38px; padding-left: 16px;}
.pagination .page-prev_g { background-position:0px -59px; padding-left: 16px; color:#cbcbcb; font-weight:normal;}
.pagination .page-next { background-position: 0px 0px; padding-right: 16px; font-weight:normal;}
.pagination .page-next_g { background-position: -0px -19px; padding-right: 16px; color:#cbcbcb;}
.pagination .page-cur {background-color: #f95f9d; border: 1px solid #ed3d83;color: #fff;font-weight: bold;}
.pagination .page-break {border: medium none; background:none transparent; color:#333;}
-->
</style>';
echo $pageViewString;
echo "<script type='text/javascript' src='/test/jquery.min.js'></script>
<script type='text/javascript'>
function tabPage(tid,id,type){
alert(tid);
}
</script>"; |
|