Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)归海一刀
published in(发表于) 2014/2/17 7:30:11
PHP实例源代码:PHP实现翻页处理的类_[PHP教程]

PHP实例源代码:PHP实现翻页处理的类_[PHP教程]

PHP实例源代码:PHP实现翻页处理的类



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();
****************/


?>








If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759