class Page{ 
var CountAll; //共有纪录数 
var CountPage; //每页显示记录数 
var Link; //显示 完整的分页信息 
var ForPage; //上一页 
var NextPage; //下一页 
var FirstPage; //第一页 
var LastPage; //最后一页 
var CurrPage; //第几页 
var PageNum; //共有多少页 
var Parameter; //参数 
var LimitNum; //不是统计全部记录,而是显示部分记录,例如共有100条记录,但是只统计显示前50条 
function Page(sql, num=30){ 
//初始化,统计记录数 
this->CountPage = num; 
global mysql; 
sql = base64_decode(sql); 
result = mysql->Query(sql); 
if (0 != mysql->AffectedRows()){ 
row = mysql->FetchArray(result); 
this->CountAll = row[0]; 
} 
else{ 
this->CountAll = 0; 
} 
//print "共有 this->CountAll 
"; 
} 
function ListPage(sql, page=0,sql_all,other){ 
//查询,定义变量,获取数据 
global mysql; 
//print "sql sql
"; 
if (isset(this->LimitNum) && this->CountAll > this->LimitNum){ 
this->CountAll = this->LimitNum; 
}//更新总浏览记录数 
sql_src = sql; 
//if (page > 0){ 
sql = base64_decode(sql); 
sql_all = base64_decode(sql_all); 
sql_src = sql; 
//} 
//echo sql; 
if ((this->CountAll % this->CountPage) == 0)//统计共有多少页 
pagecount = (integer)(this->CountAll/this->CountPage); 
else 
pagecount = (integer)(this->CountAll/this->CountPage)+1; 
this->ageNum = pagecount; 
if (page > this->ageNum)//如果页码超过页码总数则设为最大页码 
page = this->ageNum; 
if (page <= 0)//如果页码小于等于零则将页码设置为1 
page = 1; 
if (this->CountAll == 0) 
{ 
this->CurrPage = 0; 
}else{ 
this->CurrPage = page; 
} 
first_start = (page-1)*this->CountPage; 
sql = sql." limit ".first_start.", ".this->CountPage; 
//print "2sql
"; 
result = mysql->Query(sql); 
if (0 != mysql->AffectedRows()){ 
i = 0; 
while(row = mysql->FetchArray(result)){ 
array[i] = row; 
//print "name:".array[i][Name]."
"; 
i++; 
} 
} 
sql = base64_encode(sql_src); 
sql_all = base64_encode(sql_all); 
if (pagecount >1){ 
if(page == 1){ 
nextpage = page+1; 
forpage = 1; 
this->Link = ""; 
this->NextPage = ""; 
this->LastPage = ""; 
} 
else if((page > 1)&&(page < pagecount)) { 
forpage = page-1; 
nextpage = page+1; 
this->Link = ""; 
this->ForPage = ""; 
this->NextPage = ""; 
this->FirstPage = ""; 
this->LastPage = ""; 
} 
else if (page = pagecount){ 
forpage = page-1; 
nextpage = 1; 
this->Link = ""; 
this->FirstPage = ""; 
this->ForPage = ""; 
} 
} 
else{ 
this->Link = ' '; 
} 
return array;//array; 
} 
} 
/*************** 
使用例子 
include("class.config.php"); 
include("class.mysql.php"); 
include("class.page.php"); 
global mysql; 
config = new Config; 
mysql = new TDatabase(config); 
query_all = "select count(*) from user"; 
page_object = new Page(query_all,20); 
//new Page('统计记录个数语句',每页记录个数) 
if(empty(query_page)) 
query_sql = "select * from user"; 
//注意这里的变量名必须为 query_sql query_page ,因为下一页的连接参数默认为 query_sql query_page 
list = page_object->ListPage(query_sql,query_page); 
//ListPage('没有limit的前一部分,系统自动根据补齐',察看的页数) 
page_object->Parameter = '&action=view'; 
//这是传送的Url 所带的其它参数,如果有就修改变量 Parameter ,系统自动将她补在后面 
//显示数据 
for (i=0;i< page_object->CountPage;i++) 
print list[i][ID]."->".list[i][UserName]."
"; 
//返回的数据为二维哈西(关联)数组,一维为纪录的标识ID号,二维为哈西(关联)数组,取值标识建议采取用数据库中字段名的方法,例如list[0][UserName]。 
//显示其他相关数据 
echo page_object->CountAll;//纪录总数 
echo page_object->CountPage;//每页显示数据个数 
echo page_object->Link;//显示完整的分页信息 
echo page_object->FirstPage;//第一页 
echo page_object->NextPage;//下一页 
echo page_object->ForPage;//上一页 
echo page_object->LastPage;//最后一页 
echo page_object->CurrPage;//第几页 
echo page_object->PageNum;//共有多少页 
mysql->DatabaseClose(); 
****************/ 
?>