PHP分页列表类,函数
#wiki 一直都在用框架开发很少写这样的代码了,因为项目需要写了个分页 顺便发上来保存下。
class PageClass{
public $PageSize; //每页显示多少条,默认10条
private $PageCount; //统计页数
private $DataCount; //统计所有的记录
private $Page; //返回当前页数
private $SqlStr; //返回SQL代码,以便调试
function __get($key){
if(isset($this->$key)){
return $this->$key;
}
}
function __construct($pagesize = 10){
$this->PageSize = $pagesize;
}
#返回数据列表(2维数组),Sql:输入的查询语句,Page:获取page参数的值
function ListData($Sql,$Page){
$Count = mysql_query($Sql);
$this->DataCount = mysql_num_rows($Count);
//$mod = ($this->DataCount)%($this->PageSize);
//$this->PageCount = (($mod==0)?(($this->DataCount)/($this->PageSize)):(($this->DataCount-$mod)/($this->PageSize)+1));
$this->PageCount = ceil($this->DataCount/$this->PageSize);
if($this->PageCount==0)return 0;
$this->Page = $Page;
if($this->Page>$this->PageCount)$this->Page = $this->PageCount;
if($this->Page<1)$this->Page = 1;
$this->SqlStr=$Sql." limit ".($this->PageSize*$this->Page-$this->PageSize).",".$this->PageSize;
$Query = mysql_query($this->SqlStr);
if($Query==Null){
die(mysql_error());
}else{
while($tmp = mysql_fetch_array($Query)){
$Data[] = $tmp;
}
return $Data;
}
}
#输出{ 第一页 | 上一页 | 下一页 | 最后一页 },Parameters:url传递的参数
function PrintPage($Parameters){
if($this->PageCount<=1){
echo('{ 第一页 | 上一页 | 下一页 | 最后一页 }');
}else{
if($this->Page>=2 && $this->Page<$this->PageCount){
echo("{ <a href=?$Parameters&page=1>第一页<a> | <a href=?$Parameters&page=".($this->Page-1).">上一页</a> | <a href=?$Parameters&page=".($this->Page+1).">下一页</a> | <a href=?$Parameters&page=".$this->PageCount.">最后一页</a> }");
}else{
if($this->Page<2 && $this->Page<$this->PageCount){
echo("{ 第一页 | 上一页 | <a href=?$Parameters&page=".($this->Page+1).">下一页</a> | <a href=?$Parameters&page=".$this->PageCount.">最后一页</a> }");
}else{
echo("{ <a href=?$Parameters&page=1>第一页<a> | <a href=?$Parameters&page=".($this->Page-1).">上一页</a> | 下一页 | 最后一页 }");
}
}
}
echo '<span style="margin:0 15px;"></span>共<span>'.$this->PageCount.'</span>页 | 每页显示<span>'.$this->PageSize.'</span>条 | 当前第<span>'.$this->Page.'</span>页';
}
}
DEMO:
$P = new PageClass(10) //创建个对象,初始化PageSIze=10
//也可 $P->PageSize=10 设置显示条数
$Data = $P->ListDate("Select * From News",$_REQUEST['page']); //返回列表数据
//循环输出记录
$i=0;
while($i<count($Data)){
echo $Data[i]['title']; //输出标题
}
$P->PrintPage("pid=1&cid=1"); //输出上页下也代码
//也自己写成其他样式的。。。
echo $P->PageSIze;
echo $P->Pagecount;
echo $P->DataCount;
评论