大家来看看这个翻页类如何?欢迎批评雅正....来者有奖:)

bluemeteor 2003-07-23 12:19:30
接触PHP快两个月了,感觉真是个好东东,工作所需,写了个翻页类,更改了几次

希望大家批评,多谢多谢先,有请唠叨和goodname等大哥:)


<?php
/*---------------------------------
翻页类
@b.j
@ bijing@hbpcc.net
2003-07-18
-----------------------------------*/
class page{
var $Begin_Rec; //SQL中起始记录数 e.g : "limit $Begin_Rec,$..."
var $Page_Recs; //每页显示记录数
var $Page_Num; //当前页数
var $Page_Url; //连接地址
var $Page_Count; //总页数
var $Rec_Count; //总记录数
var $Show_Num; //阿拉伯数字显示

var $first="首页";
var $prev="上页";
var $next="下页";
var $last="尾页";
var $Page_Para="page"; //页面传递参数的名字

//构造函数
//参数说明
//Url: 获得页面连接
//pagesize: 获得页面内显示的记录数(满多少条记录即翻页的条件)
//page: :) 当前页数
//count:记录数量
//shownumber:是否显示 阿拉伯数字代表的页数 传递5 则显示5个阿拉伯数字(1-5),(6-10) 传递0时为不显示阿拉伯数字 目前测试使用为5
function page($Url,$pagesize,$page,$count,$shownumber=5)
{
if ($pagesize>=1)
{
$this->Page_Recs=round($pagesize);
}else
{
$this->Page_Recs=5;//如果非法的页面大小则每页显示记录数为5
}

if (empty($Url))
{
$this->Page_Url="$"."PHP_SELF";//如果空的Url则指向$PHP_SELF
}else
{
$this->Page_Url=$Url;
}

if ($page>=1)
{
$this->Page_Num=round($page);
}else
{
$this->Page_Num=1;//如果非法的页面数则指向$first
}

if ($count>=1)
{
$this->Rec_Count=round($count);
}else
{
$this->Rec_Count=0;//如果非法的记录数则记录数为0
$this->print_page();
}
if ($shownumber>=0) $this->Show_Num=round($shownumber);
$this->Calc();
}
//计算函数
function Calc()
{
//计算当前页面的起始页
$this->Page_Count=ceil($this->Rec_Count/$this->Page_Recs);
if ($this->Page_Num>$this->Page_Count) $this->Page_Num=$this->Page_Count;
$this->Begin_Rec=($this->Page_Num-1)*$this->Page_Recs;

//判断Url中是否包含?如果有则后加"&" 否则加"?"
$this->Page_Url.=(strpos($this->Page_Url,"?")>1)?"&":"?";

}
//输出函数
/* 输出格式 | 首页 | 上页| 1 2 | 下页 | 尾页 转到 input here 页 xx 条记录共计 x 页显示/当前为第 x 页 */
function print_page()
{
if ($this->Rec_Count<1)
{
echo "无符合条件记录";
}else
{
$Print_Str="<form method=\"post\" action=$this->Page_Url name=\"goto\">";
if ($this->Page_Num>1)
{
$Prev_Page=$this->Page_Num-1;
$Print_Str.="   | <a href=\"$this->Page_Url$this->Page_Para=1\">$this->first</a> | <a href=\"$this->Page_Url$this->Page_Para=$Prev_Page\">$this->prev</a>";
}else
{
$Print_Str.="   | $this->first | $this->prev";
}
/*--阿拉伯字母连接显示--*/
if ($this->Show_Num>0)//如果传递参数为0则不显示阿拉伯字母
{
$Print_Str.="|";
for ($i=$this->Page_Num;$i<=$this->Page_Count;$i++)
{
if (($i-$this->Page_Num)>=$this->Show_Num) break;
$Print_Str.=" <A href=\"$this->Page_Url$this->Page_Para=$i\">$i</a>";
}
}
/*--阿拉伯字母连接显示结束--*/

if ($this->Page_Num<$this->Page_Count)
{
$Next_Page=$this->Page_Num+1;
$Print_Str.=" | <a href=\"$this->Page_Url$this->Page_Para=$Next_Page\">$this->next</a> | <a href=\"$this->Page_Url$this->Page_Para=$this->Page_Count\">$this->last</a> ";
}else
{
$Print_Str.="| $this->next | $this->last | ";
}
$Print_Str.="转到 <input type=\"text\" name=\"$this->Page_Para\" maxlength=\"3\" size=\"2\" > 页";

$Print_Str.="<input name=\"Submit\" type=\"submit\" value=\"GO\" align=\"middle\" width=\"12\" height=\"15\">";

$Print_Str.=" $this->Rec_Count 条记录共计 $this->Page_Count 页显示/当前为第 $this->Page_Num 页</form>";

echo $Print_Str;
}
}
//打印函数结束
/*--------------使用范例---------
@// 记得要引用先!
$Page_Over=new page("127.0.0.1/display.php",12,2,55,6);

$Sql_Tmp="select * from tableA"

$start=$Page_Over->Begin_Rec;

$Sql_Tmp.=" limit $start,12";

$Page_Over->print_page;//即可输出


--------------使用范例over-----------*/
}
?>
...全文
88 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
ustb 2003-08-01
  • 打赏
  • 举报
回复
不错,收藏
AgathaZ 2003-07-29
  • 打赏
  • 举报
回复
不错,值得研究!
babystudio 2003-07-28
  • 打赏
  • 举报
回复
呵呵,继续努力。
  最好用标准格式   ,否则有时候会给你的html页面造成困惑
anita2li 2003-07-28
  • 打赏
  • 举报
回复
繼續努力
扬帆 2003-07-28
  • 打赏
  • 举报
回复
不错,学习!
netstu 2003-07-28
  • 打赏
  • 举报
回复
不错
zhongchenggd 2003-07-28
  • 打赏
  • 举报
回复
不错,准备再研究一下~
「已注销」 2003-07-28
  • 打赏
  • 举报
回复
pear里有个Pager类啊
就是做翻页的,还不错~!
blueoxygen 2003-07-28
  • 打赏
  • 举报
回复
不错不错……:)
bluemeteor 2003-07-27
  • 打赏
  • 举报
回复
UP
zalvsa 2003-07-27
  • 打赏
  • 举报
回复
php分页函数
//------------------------------------------------------分页
function page($num,$line,$offset,$search)
{
$page=ceil($num/$line);
$offset1=$offset+1;
echo"共<font>$num</font>条记录  页次:$offset1/$page  ";
if($offset)
{echo"<a href=$php_self?page=0$search>首页</a>";}
else
{echo"首页";}
echo"  ";
if($offset)
{$reoffset=$offset-1;
echo"<a href=$php_self?page=$reoffset$search>上一页</a>";}
else
{echo"上一页";}
echo"  ";
if($offset<$page-1)
{$reoffset=$offset+1;
echo"<a href=$php_self?page=$reoffset$search>下一页</a>";
}
else
{echo"下一页";
}
echo"  ";
if($offset==$page-1)
{echo"尾页";
}
else
{$pageend=$page-1;
echo"<a href=$php_self?page=$pageend$search>尾页</a>";
}
}
函数二
//--------------------------------------分页
function page1($num,$line,$page_line,$start,$page,$search){
$pagetotal=$line*$page_line;//所要显示的总条数
$total=ceil(($num-$start)/$line);//取得总页数
$total_start=ceil($num/$pagetotal);//取得总偏移数
$returnstr="  共 ".$num." 条记录  ";
if($start!=0)
{
$old_start=$start-$pagetotal;
$returnstr.="  <a href=".$PHP_SELF."?page=0&start=".$old_start.$search."><<</a>";
}
$pagestart=$start/$pagetotal*$page_line;//取得当前页数
for($i=0;$i<$total&&$i<$page_line;$i++)
{
$pagenum=$pagestart+$i+1;
$returnstr.="  <a href=".$PHP_SELF."?page=".$i."&start=".$start.$search.">".$pagenum."</a>";
}
if($total_start!=($start/$pagetotal+1)&&$num!=0)
{
$new_start=$start+$pagetotal;
$returnstr.="  <a href=".$PHP_SELF."?page=0&start=".$new_start.$search.">>></a>";
}
return $returnstr;
}
xinyaoxp 2003-07-24
  • 打赏
  • 举报
回复
还可以,继续努力
bluemeteor 2003-07-23
  • 打赏
  • 举报
回复
代码有点乱,大家有兴趣的话copy到PHP编辑器看方便些
ChinaZhuhai 2003-07-23
  • 打赏
  • 举报
回复
写得好
bluemeteor 2003-07-23
  • 打赏
  • 举报
回复
示范页啊....好的,等我找个地方
nhconch 2003-07-23
  • 打赏
  • 举报
回复
让你快了一点,怎不给个示范网址。
squiral 2003-07-23
  • 打赏
  • 举报
回复
呵呵,不错。
budai 2003-07-23
  • 打赏
  • 举报
回复
试一下!
bonniewater 2003-07-23
  • 打赏
  • 举报
回复
比我那个要好!
myblessu 2003-07-23
  • 打赏
  • 举报
回复
还可以.

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧