喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

上一主题 下一主题
 13  1/2  1  2  > 
     
标题: [原创] 改进了的分页类  
 
mslight
注册会员
Rank: 2
一般会员



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 $ANowPageID 1;
        
//    每页项目数量
        
$AInnerCount $AInnerCount $AInnerCount 10;
        
//    要滚动的页面
        
$AScriptName = empty($AScriptName) ? $_SERVER['SCRIPT_NAME'] : $AScriptName;
        
//    附带参数
        
$AVar $AVar == "default" $_SERVER['QUERY_STRING'] : $AVar;
        
//    没有项目
        
if( $ATotalCount == 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)) > ? ($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/
2007-5-31 10:16 AM#1
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
qh663
版主
Rank: 7Rank: 7Rank: 7
中级会员


UID 30020
精华 0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13
来自 河源
状态 离线
[推荐阅读] 诚聘高手
总算明白了sprintf的用法,



五百多篇PHP学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844
2007-5-31 10:30 PM#2
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
meshikar
注册会员
Rank: 2


UID 88411
精华 0
积分 87
帖子 85
金钱 87 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2007-2-17
来自 贵州 to 北京
状态 离线
[推荐阅读] 转移数据为什么出现错误?ERROR 1016 (HY000)
。。。。。。

楼上好黑...........




一个到处乱飘的家伙....  Gik
2007-6-1 07:16 AM#3
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
1314ing
新手上路
Rank: 1



UID 90432
精华 0
积分 19
帖子 15
金钱 19 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-3-30
状态 离线
[推荐阅读] eacc能和Zend Optimizer共存吗?
刚看到第一帖 没想到改进了
2007-6-4 09:08 PM#4
查看资料  Blog  发短消息  顶部
 
lichangcheng (lichangcheng)
注册会员
Rank: 2
初级会员



UID 66518
精华 0
积分 118
帖子 61
金钱 118 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-9-9
状态 离线
[推荐阅读] 不知该如何讲这个问题, 只能描述了.
我来试一下啊
2007-6-7 07:48 AM#5
查看资料  发短消息  顶部
 
lichangcheng (lichangcheng)
注册会员
Rank: 2
初级会员



UID 66518
精华 0
积分 118
帖子 61
金钱 118 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-9-9
状态 离线
[推荐阅读] (新手,急!)请教有关上传进度条的问题
怎么不会用啊?
2007-6-7 07:54 AM#6
查看资料  发短消息  顶部
 
MyNetInfo
高级会员
Rank: 4


UID 93234
精华 0
积分 943
帖子 491
金钱 0 喜悦币
威望 0
人脉 943
阅读权限 50
注册 2007-5-18
状态 离线
[推荐阅读] ms这里没有人发海艺事件
什么都写类,有没有函数的?



 
打过针,吃过药,女浴室里拍过照! 打过狼,杀过虎,俺跟村姑跳过舞! 爬过山,涉过水,我跟村姑有一腿!
 
2007-6-7 08:46 AM#7
查看资料  访问主页  Blog  发短消息  顶部
 
mslight
注册会员
Rank: 2
一般会员



UID 13015
精华 0
积分 90
帖子 67
金钱 90 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2002-3-1
来自 郑州
状态 离线
[推荐阅读] 怎么在点击删除时,出现一个新的窗口


QUOTE:
原帖由 MyNetInfo 于 2007-6-7 08:46 发表
什么都写类,有没有函数的?
其实也就是函数嘛,这样写不就是函数了.

<?php
/**
     * 输出页面滚动栏
     *
     * @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 _Scroll_Print($ATotalCount,$ANowPageID=0,$AInnerCount=0,$AScriptName="",$AVar="default",$APageKey="Page",$APageBundle=9,$IncJump true,$Msg ""){
        
//    当前页码
        
$ANowPageID $ANowPageID $ANowPageID 1;
        
//    每页项目数量
        
$AInnerCount $AInnerCount $AInnerCount 10;
        
//    要滚动的页面
        
$AScriptName = empty($AScriptName) ? $_SERVER['SCRIPT_NAME'] : $AScriptName;
        
//    附带参数
        
$AVar $AVar == "default" $_SERVER['QUERY_STRING'] : $AVar;
        
//    没有项目
        
if( $ATotalCount == 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)) > ? ($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;
    }
?>
2007-6-19 11:33 AM#8
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
熟人
中级会员
Rank: 3Rank: 3



UID 92185
精华 0
积分 332
帖子 476
金钱 332 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2007-4-29
状态 离线
[推荐阅读] 如何执行一个带php标签的字符串?
不太明白为什么现在写分页类型都要把html输出加进去?
万一美工那边的要求不一样岂不是还要改类型的代码?




性格:馋 懒 奸 猾 坏
兴趣:吃 喝 嫖 赌 抽
职业:坑 蒙 拐 骗 偷
2007-6-19 01:56 PM#9
查看资料  发短消息  顶部
 
mslight
注册会员
Rank: 2
一般会员



UID 13015
精华 0
积分 90
帖子 67
金钱 90 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2002-3-1
来自 郑州
状态 离线
[推荐阅读] 虎翼网“域名通”--买域名送超大空间
回复 #9 熟人 的帖子

什么年代了,如果美工不同意,改CSS就好了,如果一定要用图片什么的,那就改类了,本身也就是一个思路和解决方案,不可能有统吃的方法。
2007-7-10 10:47 PM#10
查看资料  访问主页  Blog  发短消息  QQ  顶部
 13  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 


Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.059885 second(s), 8 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP