📄 page.class.php
字号:
<?php
/**
* 分页类
*
* @author myblessu <sc@lin.net.cn>
* @version 1.0
* @lastupdate 2003-09-26
*
*
* 使用实例:
* $p = new page; //建立新对像
* $p->setpage(1); //设置当前页为1页
* $p->setpagesize(10); //设置每页显示信息数,默认是10条
* $p->settotal(200); //设置信息总数
* $p->setunit('条'); //设置分页信息单位,默认是条
* $p->setinfo('信息'); //设置分页信息名称,默认是信息
* $p->settablewidth('100%'); //设置显示宽度,默认是100%
* $p->settablealign('center'); //设置显示对齐方式,默认是居中对齐
* $p->settablecss(''); //设置文字的显示样式
* $p->setall(page,total,pagesize,unit,info,tablewidth,tablealign,tablecss);
* //同时设置8个参数:
* 1.当前页
* 2.每页显示数
* 3.信息总数
* 4.信息单位
* 5.信息名称
* 6.显示宽度
* 7.对齐方式
* 8.文字样式
*
* $p->printpage($para1,$para2,$para3);
* //打印分页,共三个参数:
* 1.传递的变量数组,可选。
* 示例:共传递两个变量
* $para1[0][0]="random"; //$para1[0][0]存放random变量名
* $para1[0][1]=$random; //$para1[0][1]存放random变量值
* $para1[1][0]="BigClass"; //$para1[1][0]存放BigClass变量名
* $para1[1][1]=$BigClass; //$para1[1][1]存放BigClass变量值
* 2.显示样式,可选
* 3.是否显示分页说明信息,默认是显示
*
*/
class page{
var $page; //当前页
var $pagesize=10; //每页显示数目
var $total; //总共条数
var $unit="条"; //分页信息单位
var $info="信息"; //说明信息
var $tablewidth="100%"; //表格宽度
var $tablealign="center"; //表格对齐方式
var $tablecss; //表格样式;
var $output; //输出
var $lang;
function page(){
global $page,$total;
$this->page=$page;
$this->total=$total;
}
//现在PHP还不支持构造涵数重载。
/*
function page($page,$total,$pagesize=20){
$this->page=$page;
$this->total=$total;
$this->pagesize=$pagesize;
}
function page($page,$total,$pagesize=20,$unit,$info,$tablewidth,$tablealign,$tablecss){
$this->page=$page;
$this->total=$total;
$this->pagesize=$pagesize;
$this->unit=$unit;
$this->info=$info;
$this->tablewidth=$tablewidth;
$this->tablealign=$tablealign;
$this->tablecss=$tablecss;
}
*/
function setpage($page){
$this->page=$page;
}
function setpagesize($pagesize){
$this->pagesize=$pagesize;
}
function settotal($total){
$this->total=$total;
}
function setunit($unit){
$this->unit=$unit;
}
function setinfo($info){
$this->info=$info;
}
function settablewidth($tablewidth){
$this->tablewidth=$tablewidth;
}
function settablealign($tablealign){
$this->tablealign=$tablealign;
}
function settablecss($tablecss){
$this->tablecss=$tablecss;
}
function setall($page,$total,$pagesize,$unit,$info,$tablewidth,$tablealign,$tablecss){
$this->page=$page;
$this->total=$total;
$this->pagesize=$pagesize;
$this->unit=$unit;
$this->info=$info;
$this->tablewidth=$tablewidth;
$this->tablealign=$tablealign;
$this->tablecss=$tablecss;
}
function printpage($paraArr=null,$css=null,$showtop=1){
global $lang;
if (!is_numeric($this->page)){
$this->err($lang['page.str3']);
return;
}
if (!is_numeric($this->pagesize)){
$this->err($lang['page.str4']);
return;
}
if (!is_numeric($this->total)){
$this->err($lang['page.str5']);
return;
}
if ($css==null){
$this->returnpage($paraArr,$showtop);
echo $this->output;
}else{
if (is_int($css)){
$this->returnpage1($paraArr,$showtop);
echo $this->output;
}else{
$this->err($lang['page.str6']);
}
}
//$this->_printHiddenForm();
}
function _printHiddenForm($arr=array()){
if( empty($arr) ){
global $_POST;
$arr =& $_POST;
foreach( $arr as $name => $val ){
if( is_array($val) && !empty($val) ){
_printHiddenForm($val);
} else{
echo '<input type="hidden" name="'.$name.'" value="'.urlencode($val).'">';
}
}
}
}
function returntop(){
global $lang;
$this->output.="<table width=".$this->tablewidth." border=0 cellspacing=0 cellpadding=0 align='".$this->tablealign."' class='".$this->tablecss."'>\n";
$this->output.="<tr><td align=right height=20>".$lang['page.str1']." <b>".$this->pagesize."</b> ".$this->unit.",".$lang['page.str2']." <b>".$this->total."</b> ".$this->unit.$this->info."</td></tr>\n";
$this->output.="</table>\n";
}
function returngoPage(){
$this->output.="<script>\n";
$this->output.="function goPage(page){\n";
$this->output.=" document.goPageform.page.value=page;\n";
$this->output.=" document.goPageform.submit();\n";
$this->output.="}\n";
$this->output.="</script>\n";
}
//显示:页次:1/1 页 分页:首页 上一页 下一页 尾页 转到:页
function returnpage($paraArr,$showtop){
global $lang;
$p=floor(($this->page-1) / 10);
$pagecount=ceil($this->total / $this->pagesize);
if ($showtop) $this->returntop();
$this->output.="<table width=".$this->tablewidth." border=0 cellspacing=0 cellpadding=0 align='".$this->tablealign."' class='".$this->tablecss."'>\n";
$this->returngoPage();
$this->output.="<form name=goPageform method=Post>\n";
for ($i=0;$i<count($paraArr);$i++){
$this->output.="<input type=hidden name=\"".$paraArr[$i][0]."\" value=\"".$paraArr[$i][1]."\">\n";
}
$this->output.="<tr><td>".$lang['page.str7']."<font color=red>".$this->page."</font>/".$pagecount." ".$lang['page.str9']." ";
$this->output.="</td><td align=right>".$lang['page.str8']."\n";
if ($this->page<=1){
$this->output.=$lang['page.str10']." ".$lang['page.str11']." ";
}else{
$this->output.="<a href=\"javascript:goPage('1');\" title=\"".$lang['page.str12']."\">".$lang['page.str10']."</a> ";
$this->output.="<a href=\"javascript:goPage('".($this->page-1)."');\" title=\"".$lang['page.str11']."\">".$lang['page.str11']."</a> ";
}
if (($this->page+1)>$pagecount){
$this->output.=$lang['page.str13']." ".$lang['page.str15']."\n";
}else{
$this->output.="<a href=\"javascript:goPage('".($this->page+1)."');\" title=\"".$lang['page.str13']."\">".$lang['page.str13']."</a> \n";
$this->output.="<a href=\"javascript:goPage('".$pagecount."');\" title=\"".$lang['page.str14']."\">".$lang['page.str15']."</a>\n";
}
$this->output.=" ".$lang['page.str16']."<input type='text' class=page name=page size=1 maxlength=4 ";
if ($pagecount==1) $this->output.=" disabled";
$this->output.=">".$lang['page.str9']."</td>";
$this->output.="<td width=25 align=right><input type='submit' style='height:17;font-size:9pt' value='GO' name='cndok'";
if ($pagecount==1) $this->output.=" disabled";
$this->output.="></td></tr></form></table>\n";
}
//显示: 页次:2/3 页 分页: [1] [2] [3] 转:页
function returnpage1($paraArr,$showtop){
global $lang;
$p=floor(($this->page-1) / 10);
$pagecount=ceil($this->total / $this->pagesize);
if ($showtop) $this->returntop();
$this->output.="<table width=".$this->tablewidth." border=0 cellspacing=0 cellpadding=0 align='".$this->tablealign."' class='".$this->tablecss."'>\n";
$this->returngoPage();
$this->output.="<form name=goPageform method=Post>\n";
for ($i=0;$i<count($paraArr);$i++){
$this->output.="<input type=hidden name=\"".$paraArr[$i][0]."\" value=\"".$paraArr[$i][1]."\">\n";
}
$this->output.="<tr><td>".$lang['page.str7']."<font color=red>".$this->page."</font>/".$pagecount.$lang['page.str9']." ";
$this->output.="</td><td align=right>".$lang['page.str8']."\n";
if ($p*10>0){
$this->output.="<a href=\"javascript:goPage('".($p)."');\" title=\"".$lang['page.str17'].($p)." ".$lang['page.str9']."\">[<<]</a> ";
}
for ($ii=($p*10+1);$ii<=($p*10+10);$ii++){
if ($ii<=$pagecount){
if($ii==$this->page){
$this->output.="<font color=red>[".$ii."]</font> \n";
}else{
$this->output.="<a href=\"javascript:goPage('".$ii."');\" title=\"".$lang['page.str17'].$ii.$lang['page.str9']."\"><font color=blue>[".$ii."]</font></a> \n";
}
}
}
if ($ii<=$pagecount){
$this->output.="<a href=\"javascript:goPage('".$ii."');\" title=\"".$lang['page.str17'].$ii.$lang['page.str9']."\">[>>]</a> \n";
}
$this->output.=$lang['page.str16']."<input type='text' class=page name=page size=1 maxlength=4 ";
if ($pagecount==1) $this->output.=" disabled";
$this->output.=">".$lang['page.str9']."</td>";
$this->output.="<td width=25 align=right><input type='submit' style='height:17;font-size:9pt' value='GO' name='cndok'";
if ($pagecount==1) $this->output.=" disabled";
$this->output.="></td></tr></form></table>\n";
}
function err($msg){
echo $msg;
}
}
class SoPaginationClass{
/*======================================================
类名: SoPaginationClass
功能:分页类,并且提供相邻页的链接(数据无限量),提供数据库和文本两种使用实例
原创作者:西大浪人 (simonlsy@vip.sina.com) 2005-4-8
程序完善:纯粹误会 (http://www.zh5j.com QQ:44922032)2005-4-28
修改:Phzzy (http://www.phzzy.org) 2005-7-20
----------
请尊重作者的劳动,保留如上注释信息
----------
比较另类
=======================================================*/
var $mBegin;//当前分页超始位置
var $mEnd;//当前分页结束位置(不含)
var $mPageCode;#分页链接代码
function SoPaginationClass($total,$per=1,$midNum=10,$nowfont_class="nowpage",$font_class='pagefont')
{
$prepage="prepage";
$nextpage="nextpage";
$font="style=\"font-family:Webdings\"";
GLOBAL $HTTP_GET_VARS,$HTTP_SERVER_VARS;//兼容PHP4.1以下的服务器
if(!$total)return $this->mPageCode=' ';//为零的总数处理
$page_cnt=ceil($total/$per);//计算页数(取整返回)
$this->mPageCode='';#输出的分页链接初值
@$page=$HTTP_GET_VARS['page'];
if($page < 1) $page=1;
elseif($page>$page_cnt)$page=$page_cnt;
$next_page=$page+1;
$prev_page=$page-1;
/*下面是一个纯粹误会早期所写的复杂语句,功能:让当前页永远距中,并使分页链接数量保持平衡*/
$offset=floor($midNum/2);
$current_page=$page;
if($current_page-$offset<=0)$current_page=$offset+1;
if($current_page+$offset>$page_cnt)$current_page=$page_cnt-$offset;
$begin=($current_page-$offset)>0?$current_page-$offset:1;
$end=($current_page+$offset)<$page_cnt?$current_page+$offset:$page_cnt;
/*复杂语句Over*/
/*获取地址,不说下面中间两条语句多余,那是一个数组型的$_GET的除Bug方案*/
$SELF="http://$_SERVER[HTTP_HOST]$_SERVER[PHP_SELF]?";
@$QUERY=$_SERVER["QUERY_STRING"];
$query_page=preg_replace(array("!((&|^)page=([^&]+))|(page=)!","!(^&)|[&]{2,}|([&]$)!"),array('',''),$QUERY);
$query_per=preg_replace(array("!((&|^)page_per=([^&]+))|(page_per=)!","!(^&)|[&]{2,}|([&]$)!"),array('',''),$QUERY);
$query_page=$SELF.$query_page.($query_page?"&":"");
$query_per=$SELF.$query_per.($query_per?"&":"");
/*获取地址 Over*/
#自定义每页的记录数
if($page_cnt==1)
{
$this->mPageCode.="";
}
else
{
$this->mPageCode.=$page>1
? "\n<a href=\"{$query_page}page=1\"><span $font>9</span></a>\n<a href=\"{$query_page}page=$prev_page\" title=\"上一页(Back)\"><span $font>7</span></a>"
: "\n<span $font>9</span> <span $font>7</span>";
#中间页
for($i=$begin;$i<=$end;$i++)
{
$this->mPageCode.=$page==$i
? "\n<span class='$nowfont_class'>$i</span>"
: "\n<span><a href=\"{$query_page}page=$i\" class='$font_class'>$i</a></span>";
}
$this->mPageCode.=$page<$page_cnt
? "\n<a href=\"{$query_page}page=$next_page\" title=\"下一页(Next)\" ><span $font>8</span></a>\n<a href=\"{$query_page}page=$page_cnt\"><span $font>:</span></a>"
: "\n<span $font>8</span> <span $font>:</span>";
}
}
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -