花了一会时间自己写另一个分页,当然也参考了别人的代码,觉得很多都不符合我自己的要求,或则说自己不满意。
分页类,自己可以再进行扩展
mypage.class.php
<?php
/*
created data:2009-06-10
created by: windy
*/
class myPage{
var $currentPage=1; //当前页码
var $dataArray; //传递的数组
var $pagerPageRowNum = 5; //每页有多少数据
var $pagerRowNum; //总数据
var $pagerPage; //总页数
var $pageBarNum = 3;//控制记录条的个数。
var $ajax_action_name='';//AJAX动作名
var $url="";//url地址头
var $pageName = "p"; //参数名称
var $nextPage='>';//下一页
var $prePage='<';//上一页
var $firstPage='First';//首页
var $lastPage='Last';//尾页
var $isAjax=false;//尾页
var $formatLeft='[';
var $formatRight=']';
public function __construct($pageArray) {
$dataArray = $pageArray['dataArray'];
$currentPage = $pageArray['currentPage'];
$pagerPageRowNum = $pageArray['pagerPageRowNum'];
$pageBarNum = $pageArray['pageBarNum'];
$pageName = $pageArray['pageName'];
$url = $pageArray['url'];
$isAjax = $pageArray['isAjax'];
$formatLeft = $pageArray['formatLeft'];
$formatRight = $pageArray['formatRight'];
$nextPage = $pageArray['nextPage'];
$prePage = $pageArray['prePage'];
$firstPage = $pageArray['firstPage'];
$lastPage = $pageArray['lastPage'];
$list = array_values($dataArray);
$pager = array();
if($pagerPageRowNum){
$this->pagerPageRowNum = $pagerPageRowNum;
}
if($currentPage){
$this->currentPage = $currentPage;
}
if($pageName){
$this->pageName = $pageName;
}
if($pageBarNum){
$this->pageBarNum = $pageBarNum;
}
if($isAjax){
$this->isAjax = $isAjax;
}
if($formatLeft){
$this->formatLeft = $formatLeft;
}
if($formatRight){
$this->formatRight = $formatRight;
}
if($firstPage){
$this->firstPage = $firstPage;
}
if($lastPage){
$this->lastPage = $lastPage;
}
if($prePage){
$this->prePage = $prePage;
}
if($nextPage){
$this->nextPage = $nextPage;
}
if($this->isAjax == true){
echo '<SCRIPT LANGUAGE="JavaScript">
function ajaxSelected(obj){
var url = document.URL;
var re = re = /[?&]p=[^&]*/;
url = url.replace(re, "");
if (url.indexOf("?") > -1) {
url += "&p=" + obj.value;
} else {
url += "?p=" + obj.value;
}
location.href = url;
}
</SCRIPT>';
}
$this->_set_currentPage();
$this->_set_url($url);
$this->pagerRowNum = count($list);
$this->pagerPageRowNum = $this->pagerPageRowNum;
$this->pagerPage = ceil($this->pagerRowNum / $this->pagerPageRowNum );
if($this->pagerPage < $this->pageBarNum){
$this->pageBarNum = $this->pagerPage;
}else{
$this->pageBarNum = $this->pageBarNum;
}
$start = ($this->currentPage - 1) * $this->pagerPageRowNum;
$end = $start + $this->pagerPageRowNum;
$end = $end > $this->pagerRowNum ? $this->pagerRowNum : $end;
$pager = array();
for ($i = $start; $i < $end; $i++) {
$pager[] = $list[$i];
}
$this->dataArray = $pager;
}
/**
* 设置url头地址
* @param: String $url
* @return boolean
*/
function _set_url($url=""){
if(!empty($url)){
//手动设置
$this->url=$url.((stristr($url,'?'))?'&':'?').$this->pageName."=";
}else{
//自动获取
if(empty($_SERVER['QUERY_STRING'])){
//不存在QUERY_STRING时
$this->url=$_SERVER['REQUEST_URI']."?".$this->pageName."=";
}else{
//
if(stristr($_SERVER['QUERY_STRING'],$this->pageName.'=')){
//地址存在页面参数
$this->url=str_replace($this->pageName.'='.$this->currentPage,'',$_SERVER['REQUEST_URI']);
$last=$this->url[strlen($this->url)-1];
if($last=='?'||$last=='&'){
$this->url.=$this->pageName."=";
}else{
$this->url.='&'.$this->pageName."=";
}
}else{
//
$this->url=$_SERVER['REQUEST_URI'].'&'.$this->pageName.'=';
}//end if
}//end if
}//end if
}
/**
* 设置当前页面
*
*/
function _set_currentPage(){
if(isset($_GET[$this->pageName])){
//系统获取
$this->currentPage=intval($_GET[$this->pageName]);
}else{
//手动设置
$this->currentPage=intval($currentPage);
}
}
public function show(){
foreach($this->dataArray as $key=>$value){
echo '$key: '.$key.'=>$value: '.$value."<br/>";
}
}
public function showPagerList($mode){
$pagesList = "";
if($this->pagerRowNum == 0){
return "";
}
switch($mode){
case 1:
//基础模式
$pagesList .= "Pages:";
$pagesList .= $this->nowbar();
break;
case 2:
//基础模式 + AJAX
$pagesList .= "Pages:";
$pagesList .= $this->nowbar(). $this->ajaxSelect();
break;
case 3:
//普通模式无首页末页
$pagesList .= "Pages:";
$pagesList .= $this->prePage() . $this->nowbar() . $$this->nextPage() ;
break;
case 4:
//全能模式除ajax
$pagesList .= "Pages:";
$pagesList .= $this->firstPage() . $this->prePage() . $this->nowbar() . $this->nextPage() . $this->lastPage() ;
break;
default:
//全能模式
$pagesList .= "Pages:";
$pagesList .= $this->firstPage() . $this->prePage() . $this->nowbar() . $this->nextPage() . $this->lastPage() . $this->ajaxSelect();
break;
}
return $pagesList;
}
public function _get_text($str){
return $this->formatLeft . $str . $this->formatRight;
}
public function nowbar(){
$plus=ceil($this->pageBarNum/2);
if($this->pageBarNum-$plus+$this->currentPage>$this->pagerPage){
$plus= $this->pageBarNum-$this->pagerPage+$this->currentPage;
}
$begin=$this->currentPage-$plus+1;
$begin=($begin>=1)?$begin:1;
for($i=$begin;$i<$begin+$this->pageBarNum;$i++){
if($i == $this->currentPage){
$pagesList .= $this->_get_text($i)."/n";
}else{
$pagesList .= $this->_get_text($this->getLinkUrl($i,$i))."/n";
}
}
return $pagesList;
}
public function getLinkUrl($i,$word){
$link = "";
$link .= '<a href="'.$this->url.$i.'">'.$word.'</a>';
return $link;
}
public function firstPage(){
$firstPage = "";
if($this->currentPage == 1){
$firstPage .= $this->firstPage."/n";
}else{
$firstPage .= $this->getLinkUrl(1,$this->firstPage)."/n";
}
return $firstPage;
}
public function lastPage(){
$firstPage = "";
if($this->currentPage == $this->pagerPage){
$firstPage .= $this->lastPage."/n";
}else{
$firstPage .= $this->getLinkUrl($this->pagerPage,$this->lastPage)."/n";
}
return $firstPage;
}
public function prePage(){
$prePage = "";
if($this->currentPage == 1){
$prePage .= $this->prePage."/n";
}else{
$prePage .= $this->getLinkUrl(($this->currentPage-1),$this->prePage)."/n";
}
return $prePage;
}
public function nextPage(){
$nextPage = "";
if($this->currentPage == $this->pagerPage){
$nextPage .= $this->nextPage."/n";
}else{
$nextPage .= $this->getLinkUrl(($this->currentPage+1),$this->nextPage)."/n";
}
return $nextPage;
}
public function ajaxSelect(){
$return='<select name="PB_Page_Select" οnchange="ajaxSelected(this)">';
for($i=1;$i<=$this->pagerPage;$i++){
if($i==$this->currentPage){
$return.='<option value="'.$i.'" selected>'.$i.'</option>';
}else{
$return.='<option value="'.$i.'">'.$i.'</option>';
}
}
unset($i);
$return.='</select>';
return 'Go ' . $return ;
}
}
?>
调用页面:
mypage.php
<?php
require_once('mypage.class.php');
$array = range(0,22);
$pageArray = array('dataArray'=>$array,'isAjax'=>true,'pageBarNum'=>'100','prePage'=>'上一页','nextPage'=>'下一页','firstPage'=>'首页', 'lastPage'=>'末页');
$page = new myPage($pageArray);
echo $page->show();
echo "<br />";
echo $page->showPagerList(0);
?>
可以直接使用的 放在同个目录下,不像有些类,需要修改或有错误。
直接测试