mslight
注册会员

一般会员
UID 13015
精华
0
积分 90
帖子 67
金钱 90 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2002-3-1 来自 郑州
状态 离线
|
   
改进了的分页类
之前发过一个类:
http://www.phpx.com/happy/thread-124966-1-1.html
最近又做了一些修改,主要是易用性方面的改进,现在发上来.
内容如下:
<?php /** * 实现滚动栏的类 * * 根据页面内容,数据量,生成一个用来显示/控制的页面滚动栏. * * @example 最简单用法: Class_Scroll::_Print(1234); * * @author 周贝晨 QQ:11320785 * @version 2.2 * * <code> * 2007-05-06 修正了参数的位置,增加参数默认值 * 2006-09-22 修正统一了部分引号的使用 * 2006-07-16 重写了大部分代码 * </code> * * @todo 生成一个页面内容滚动栏 */ class Class_Scroll{ /** * 输出页面滚动栏 * * @param integer $ATotalCount 滚动信息的总数 * @param integer $ANowPageID 当前页号 * @param integer $AInnerCount 每页内的信息数 * @param string $AScriptName 要进行滚动的页面 * @param string $AVar 需要附带的其它变量及其值 * @param string $APageKey 用来指定页号的变量名 * @param integer $APageBundle 滚动栏显示的页数批示最大值 * @param boolean $IncJump 是否显示页面跳转下拉单(默认:true) * @param string $Msg 没有项目时显示的提示内容 * @return string 页面滚动栏的HTML代码 */ function _Print($ATotalCount,$ANowPageID=0,$AInnerCount=0,$AScriptName="",$AVar="default",$APageKey="Page",$APageBundle=9,$IncJump = true,$Msg = ""){ // 当前页码 $ANowPageID = $ANowPageID > 0 ? $ANowPageID : 1; // 每页项目数量 $AInnerCount = $AInnerCount > 0 ? $AInnerCount : 10; // 要滚动的页面 $AScriptName = empty($AScriptName) ? $_SERVER['SCRIPT_NAME'] : $AScriptName; // 附带参数 $AVar = $AVar == "default" ? $_SERVER['QUERY_STRING'] : $AVar; // 没有项目 if( $ATotalCount == 0 or empty($ATotalCount)) return $Msg;//"No Item Here."; // 计算总页数 $PageCount = ceil($ATotalCount / $AInnerCount); // 检查控制当前页码值 if($ANowPageID < 1) $ANowPageID = 1; if($ANowPageID > $PageCount) $ANowPageID = $PageCount; // 确定当然要显示的数码链接值 $StartNum = ($ANowPageID - floor($APageBundle / 2)) > 0 ? ($ANowPageID - floor($APageBundle / 2)) : 1; $EndNum = ($PageCount - $StartNum) < $APageBundle ? $PageCount : ($StartNum + $APageBundle - 1); if((($EndNum - $StartNum) < $APageBundle)&&($PageCount > $APageBundle)) $StartNum = $EndNum - $APageBundle + 1; // 获得变量 if(strlen($AVar) > 0) $Vars = explode("&",$AVar); if(count($Vars) > 0){ for($i=0;$i<count($Vars);$i++){ $v = explode("=",$Vars[$i]); if($v[0]!=$APageKey) $VarString.=sprintf("%s=%s&",$v[0],$v[1]); } } // 首页链接 $OutStringr = sprintf("<a href=\"%s?%s%s=%s\">%s</a>n",$AScriptName,$VarString,$APageKey,"1","首页"); // 上一页链接 $OutStringr .= ($ANowPageID==1) ? " " : sprintf("<a href=\"%s?%s%s=%s\">%s</a>n",$AScriptName,$VarString,$APageKey,$ANowPageID-1,"上一页"); // 中间页链接 for($i = $StartNum; $i <= $EndNum; $i++) $OutStringr .= ($i==$ANowPageID) ? sprintf("<span class=\"Currpage\">%s</span>n",$i) : sprintf("<a href=\"%s?%s%s=%s\">%s</a>%s",$AScriptName,$VarString,$APageKey,$i,$i,"r"); // 下一页链接 $OutStringr .= ($ANowPageID==$PageCount) ? " " : sprintf("<a href=\"%s?%s%s=%s\">%s</a>n",$AScriptName,$VarString,$APageKey,$ANowPageID+1,"下一页"); // 尾页链接 $OutStringr .= sprintf("<a href=\"%s?%s%s=%s\">%s</a> 共%s页%s条(%d/页)n",$AScriptName,$VarString,$APageKey,$PageCount,"尾页",$PageCount,$ATotalCount,$AInnerCount); // 跳转链接 if ($IncJump){ $OutStringr .= sprintf("<label>跳至(J): <select name=\"ScrollJump\" accesskey=\"j\" onChange=\"javascript:if(this.value != 0) document.location='%s?%s%s='+this.value;\" id=\"ScrollJump\">n",$AScriptName,$VarString,$APageKey); for($i = 1; $i <= $PageCount; $i++) { $SelectedStr = ($i == $ANowPageID) ? " selected=\"selected\"" : ""; $OutStringr .= sprintf("<option value=\"%d\"%s>第%d页</option>n",$i,$SelectedStr,$i); } $OutStringr .= "</select></label>"; } // 输出 return $OutStringr; } } ?> 用法:
<?php $ItemCount = 6853;//数据总量 Class_Scroll::_Print($ItemCount); ?> 使用实例: http://www.cj97.com/
|
|