找回密码
 注册
搜索
热搜: java php web
查看: 663|回复: 0

PHP文章分页类

[复制链接]
发表于 2009-6-6 20:41:42 | 显示全部楼层 |阅读模式
<?php
/*
*
*冷彦辰编写于2006-3-10 主要用于处理翻页
*
*
*/
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.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><img src="images/next.gif" align="absmiddle"> </button><button.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><img src="images/prev_end.gif" align="absmiddle"> </button>";
$this->NextPage = "<button.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><img src="images/next.gif" align="absmiddle"> </button>";
$this->LastPage = "<button.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><img src="images/prev_end.gif" align="absmiddle"> </button>";
}
else if(($page > 1)&&($page < $pagecount)) {
$forpage = $page-1;
$nextpage = $page+1;
$this->Link = "<button.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><img src="images/prev_top.gif" align="absmiddle"> </button><button.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><img src="images/prev.gif" align="absmiddle"> </button><button.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><img src="images/next.gif" align="absmiddle"> </button><button.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><img src="images/prev_end.gif" align="absmiddle"> </button>";
$this->ForPage = "<button.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><img src="images/prev.gif" align="absmiddle"> </button>";
$this->NextPage = "<button.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><img src="images/next.gif" align="absmiddle"> </button>";
$this->FirstPage = "<button.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><img src="images/prev_top.gif" align="absmiddle"> </button>";
$this->LastPage = "<button.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><img src="images/prev_end.gif" align="absmiddle"> </button>";
}
else if ($page = $pagecount){
$forpage = $page-1;
$nextpage = 1;
$this->Link = "<button.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><img src="images/prev_top.gif" align="absmiddle"> </button><button.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><img src="images/prev.gif" align="absmiddle"> </button>";
$this->FirstPage = "<button.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><img src="images/prev_top.gif" align="absmiddle"> </button>";
$this->ForPage = "<button.$this->Parameter."&sql_all=".$sql_all."".$other."'" class="button_a" style="width:30;height:22";><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();



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

?>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|软晨网(RuanChen.com)

GMT+8, 2024-11-14 12:57

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表