php分页函数

直接调用PP()函数带入参数即可:

<?php
class showPage
{
var $psize = 0; //每页显示记录类
var $pernum = 6; //页码偏移量
var $varstr = ""; //要传递的变量数组
var $tpage = 0; //总页数
var $pers = 0; //记录组总数
var $eid = "";//SQL server 分页支点
var $page = 0;//当前页码
var $limit = ""; //MySQL分页生成语句
//取得传递变量精数组,并检测它是否为空

function get(){
foreach($_GET as $k=>$v){

$i++;
$str=($i==1)?'?':'&';
$this->varstr=($k<>'page')?$this->varstr.$str.$k.'='.$v:$this->varstr;
}echo 'as';exit;
$this->varstr = $this->varstr ? $this->varstr.'&' : '?';
$this->page = $_REQUEST['page'] ? $_REQUEST['page'] : 1;
// 用于 SQL server 分页记录读取值 //
//$this->eid= $this->page*$this->psize;
//用于MySQL 分页生成语句//

$this->limit=($this->page-1)*$this->psize.','.$this->psize;
}
function total($number,$psize) //统计页码数
{
$this->tpage = ceil($number / $this->psize);
$this->pers = ceil($this->tpage / $this->pernum);
}
/*
* 分类函数PP(parse page ),$page为当页数
* $number 为记录总数, $psize 为每页显示数目 17 5
* @return string
*/
function PP($number=0,$psize=0){
$this->psize = $psize ? $psize : $this->psize;
$this->get();
$this->total($number,$psize);
$setpage=$this->page?ceil($this->page/$this->pernum) : 1;
$pagenum=($this->tpage > $this->pernum) ? $this->pernum : $this->tpage;
if ($number<=$this->psize){
$text='';
}
else{
$text='<form id=pageform name=pageform method=post action='.$this->varstr.'><tr><td <td align=right><a>共'.$number.'条</a> ';
if($this->page >1){
$text.='<a title="第一页" href='.$this->varstr.'page=1>首页</a>';
}
if($setpage>1){
$lastsetid=$this->page-$this->pernum;
$text.='<a title="前'.$this->pernum.'页" href='.$this->varstr.'page='.$lastsetid.'>前'.$this->pernum.'页</a>';
}
if ($this->page > 1){
$pre = $this->page-1;
$text .= '<a title="上一页" href='.$this->varstr.'page='.$pre.'>上页</a>';
}
if($this->page >5){
$text.='<a title="第一页" href='.$this->varstr.'page=1>1</a>';
}
//$i = ($setpage-1)*$this->pernum;
$i = $this->page-($this->pernum/2);
if($i<=0)
{
$i=0;
}
for($j=$i; $j<($i+$pagenum) && $j<$this->tpage;$j++){
$newpage = $j+1;
if ($this->page == $j+1){
$text.=' <span class="current">'.($j+1).'</span> ';
}
else{
$text .='<a title="第'.($j+1).'页" href='.$this->varstr.'page='.$newpage.'>'.($j+1).'</a>';
}
}
if ($this->page < $this->tpage){
$next = $this->page+1;
$text .= '<a title=下一页 href='.$this->varstr.'page='.$next.'>下页</a>';
}
if ($setpage < $this->pers){
$nextpre = $this->page+$this->pernum;
$text .= '<a title=后'.$this->pernum.'页 href='.$this->varstr.'page='.$nextpre.'>后'.$this->pernum.'页</a>';
}
if ($this->page < $this->tpage){
$text.= '<a title="最后一页" href='.$this->varstr.'page='.$this->tpage.'>尾页</a>';
}
$text.= '<input name="page" type="text" size="2" style="width: 20px; height: 14px;" value=' . $this->page . ' onkeypress="return event.keyCode>=48&&event.keyCode<=57||event.keyCode==46" onpaste="return !clipboardData.getData(text).match(/\D/)" ondragenter="return false" >页 <input type="button" onClick="javascript:pageform.submit();" class="Button_Searcha" value="确定" />';
}
return $text;
}
}
/***********************************************
******************** 实例调用 *****************
***********************************************

申明一个分页新类
$p = new showPage;

$num  = 100;  //记录总数
$psize = 15;  //每页显示记录数

$smarty->assign('pp',$p->PP($num,$psize));

MySQL 和 SQL server 使用的实例与区别


// MySQL 分页实例
$db->query("select * from table milit $p->limit");

// SQL server 分页实例
$db->query($db,"select top $p->psize * from (select top $p->eid from table order by id desc) DERIVEDTBL ORDER BY id");

*/
?>



posted @ 2011-11-22 14:12  johnsneakers  阅读(217)  评论(0编辑  收藏  举报