用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 <br>";

}

function ListPage($sql, $page=0,$sql_all,$other){

//查询,定义变量,获取数据

global $mysql;

//print "sql sql<br>";

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<br>";

$result = $mysql->Query($sql);

if (0 != $mysql->AffectedRows()){

$i = 0;

while($row = $mysql->FetchArray($result)){

$array[$i] = $row;

//print "name:".$array[$i][Name]."<br>";

$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 = "<button onClick="javascript:location.href=’?query_sql=$sql&query_page=$nextpage".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/next.gif" align="absmiddle"> </button><button onClick="javascript:location.href=’?query_sql=$sql&query_page=$pagecount".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/prev_end.gif" align="absmiddle"> </button>";

$this->NextPage = "<button onClick="javascript:location.href=’?query_sql=$sql&query_page=$nextpage".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/next.gif" align="absmiddle"> </button>";

$this->LastPage = "<button onClick="javascript:location.href=’?query_sql=$sql&query_page=$pagecount".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/prev_end.gif" align="absmiddle"> </button>";

}

else if(($page > 1)&&($page < $pagecount)) {

$forpage = $page-1;

$nextpage = $page+1;

$this->Link = "<button onClick="javascript:location.href=’?query_sql=$sql&query_page=1".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/prev_top.gif" align="absmiddle"> </button><button onClick="javascript:location.href=’?query_sql=$sql&query_page=$forpage".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/prev.gif" align="absmiddle"> </button><button onClick="javascript:location.href=’?query_sql=$sql&query_page=$nextpage".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/next.gif" align="absmiddle"> </button><button onClick="javascript:location.href=’?query_sql=$sql&query_page=$pagecount".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/prev_end.gif" align="absmiddle"> </button>";

$this->ForPage = "<button onClick="javascript:location.href=’?query_sql=$sql&query_page=$forpage".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/prev.gif" align="absmiddle"> </button>";

$this->NextPage = "<button onClick="javascript:location.href=’?query_sql=$sql&query_page=$nextpage".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/next.gif" align="absmiddle"> </button>";

$this->FirstPage = "<button onClick="javascript:location.href=’?query_sql=$sql&query_page=1".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/prev_top.gif" align="absmiddle"> </button>";

$this->LastPage = "<button onClick="javascript:location.href=’?query_sql=$sql&query_page=$pagecount".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/prev_end.gif" align="absmiddle"> </button>";

}

else if ($page = $pagecount){

$forpage = $page-1;

$nextpage = 1;

$this->Link = "<button onClick="javascript:location.href=’?query_sql=$sql&query_page=1".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/prev_top.gif" align="absmiddle"> </button><button onClick="javascript:location.href=’?query_sql=$sql&query_page=$forpage".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/prev.gif" align="absmiddle"> </button>";

$this->FirstPage = "<button onClick="javascript:location.href=’?query_sql=$sql&query_page=1".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/prev_top.gif" align="absmiddle"> </button>";

$this->ForPage = "<button onClick="javascript:location.href=’?query_sql=$sql&query_page=$forpage".$this->Parameter."&sql_all=".$sql_all."".$other."’" ;><img src="images/prev.gif" align="absmiddle"> </button>";

}

}

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]."<br>";

//返回的数据为二维哈西(关联)数组,一维为纪录的标识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();

****************/