发一个我自己用的.数据库链接用ADODB. <? /*** *分页处理 *实例运行后,参数:totalPages 为总页数,totalNum 为总记录数 perpage_num 为每页数量 * */ class pagination{ var $sql;//SQL语句 var $perpage_num;//每页的记录数量 var $page;//真实页数 var $offset;//偏移量 var $totalNum;//记录总数量 var $totalPages;//总页数 var $dbObj;//数据库对象 var $pageQuery = array();//传递参数 function pagination($db,$sql,$page=1,$perpage_num=15,$swhere='') { $this->dbObj = $db;
//把条件写成一个数组,一般几种情况写出来. if (is_array($swhere)) { $swhere = $this->GetWhereQueryString($swhere); }
<?
/***
*分页处理
*实例运行后,参数:totalPages 为总页数,totalNum 为总记录数 perpage_num 为每页数量
*
*/
class pagination{ var $sql;//SQL语句
var $perpage_num;//每页的记录数量
var $page;//真实页数
var $offset;//偏移量
var $totalNum;//记录总数量
var $totalPages;//总页数
var $dbObj;//数据库对象
var $pageQuery = array();//传递参数
function pagination($db,$sql,$page=1,$perpage_num=15,$swhere='')
{
$this->dbObj = $db;
//把条件写成一个数组,一般几种情况写出来.
if (is_array($swhere)) {
$swhere = $this->GetWhereQueryString($swhere);
}
//插入条件
$sql_where = preg_replace("/select.*from/i","select count(*) from ",$sql);
$sql1 = stristr($sql,"where");
$sql2 = stristr($sql1,"order");
if($sql2)
$sql3 = str_ireplace($sql2,"",$sql1)." $swhere ";
else
$sql3 = $sql1 . " $swhere ";
$sql = str_ireplace($sql1,$sql3,$sql);
if($sql2)
$sql .= $sql2;
//echo $sql;
$this->sql = $sql;
$this->perpage_num = $perpage_num;
$this->page = (empty($page))?1:$page;
$this->offset = ($this->page-1)*$this->perpage_num;//偏移量
// echo $this->offset;
$total_sql = preg_replace("/select.*from/i","select count(*) from ",$sql);
$rs = $this->dbObj->Execute($total_sql);
$this->totalNum = $rs->fields[0];
$this->totalPages = ceil($this->totalNum / $this->perpage_num);
//$this->pageQuery = array();
}
/**
* 生成一个查询语句
*
* @param unknown_type $swhere
* $swhere是一个数组,其中$swhere[][0]是比较的关系,$swhere[][1]是比较的值,$swhere[][2]是接收的参数
* @return unknown
*/
function GetWhereQueryString($swhere){
$tmp = "";
if(is_array($swhere))
{
foreach ($swhere as $key=>$value)
{
if($value[0] == "like")
$tmp .= " and $key like '%".$value[1]."%'";
else
$tmp .= " and $key ".$value[0]." '".$value[1]."'";
$this->SetPageQuery($value[2],urlencode($value[1]));
}
}
return $tmp;
}
function GetData()
{
$rs = $this->dbObj->SelectLimit($this->sql,$this->perpage_num,$this->offset);
$result = array();
if ($rs) {
while ($o = $rs->FetchRow()) {
$result[] = $o;
//$rs->MoveNext();
}
}
return $result;
}
function SetPageQuery($key,$value){
$tmp[key]=$key; $tmp[value]=$value;
$this->pageQuery[]=$tmp;
//print_r($tmp);
}
function ShowPagination()
{
global $PHP_SELF,$HTTP_HOST;
//显示的形式 |<< < 1 2 3 4 5 > >>|
$strFirst = "首 页";
$strPre = "上一页";
$strNext = "下一页";
$strLast = "尾 页";
$url = $_SERVER['PHP_SELF']."?page=";
$k=count($this->pageQuery);
$strQuery=""; //生成一个要传递参数字串
for($i=0;$i<$k;$i++){
$strQuery.="&".$this->pageQuery[$i][key]."=".$this->pageQuery[$i][value];
} $intPrev = ($this->page - 1) < 1 ? 1 : ($this->page - 1);//上一页
$intNext = ($this->page + 1) > $this->totalPages ? $this->totalPages : ($this->page + 1);//下一页
if($this->page > 1)
$strHeader = "<a href='".$url."1{$strQuery}' title='首页' class='s1'>{$strFirst}</a> <a href='".$url."{$intPrev}{$strQuery}' title='上一页' class='s1'>{$strPre}</a> ";
if($this->page < $this->totalPages)
$strEnd = "<a href='".$url."{$intNext}{$strQuery}' title='下一页' class='s1'>{$strNext}</a> <a href='".$url."{$this->totalPages}{$strQuery}' title='尾页' class='s1'>{$strLast}</a> ";
if($this->page-2>0)
$str .= "<a href='".$url.($this->page-2)."{$strQuery}' title='".($this->page-2)."'>".($this->page-2)."</a> ";
if($this->page-1>0)
$str .= "<a href='".$url.($this->page-1)."{$strQuery}' title='".($this->page-1)."'>".($this->page-1)."</a> ";
$str .= "<a href='#' class='s2'>".($this->page)."</a> ";
if($this->page+1<$this->totalPages)
$str .= "<a href='".$url.($this->page+1)."{$strQuery}' title='".($this->page+1)."'>".($this->page+1)."</a> ";
if($this->page+2<$this->totalPages)
$str .= "<a href='".$url.($this->page+2)."{$strQuery}' title='".($this->page+2)."'>".($this->page+2)."</a> ";
$strEndPageNum = "<div class='endPageNum'><table align='center'><tr><td>".$strHeader.$str.$strEnd."</td></tr></table></div>";
return $strEndPageNum;
}
}
?>