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

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
 17  1/2  1  2  > 
     
标题: 只需两个参数:最傻瓜的一个通用分页类  
 
linolu
新手上路
Rank: 1
初级会员



UID 68484
精华 0
积分 38
帖子 26
金钱 38 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-2-9
状态 离线
[广告]: q m
只需两个参数:最傻瓜的一个通用分页类

<?php

/**
** 通用分页类。只需提供数据总数与每页显示数。
** 无需指定URL,链接由程序生成。方便用于检索结果分页。
** @author  : lino(luckfeng@gmail.com)
** @site                : http://www.ypren.com
** @version : 0.3
** @date    :  2006/2/24
**/

class Pager{
        var $url;
        var $countall;
        var $page;
        var $thestr;
        var $backstr;
        var $nextstr;
        var $pg;
        //构造函数,实例化该类的时候自动执行该函数
        function Pager($countall,$countlist){
                @$this->pg=sprintf("%d",$_GET["pg"]);
                //保证pg在未指定的情况下为从第1页开始
                if ($this->pg==0){
                        $this->pg=1;
                }
                if (!isset($this->pg)){
                        $this->pg=1;
                }
                //记录数与每页显示数不能整队时,页数取余后加1
                $this->countall = $countall;
                if ($this->countall%$countlist!=0){
                        $this->page=sprintf("%d",$this->countall/$countlist)+1;
                }
                else{
                        $this->page=$this->countall/$countlist;
                }
               
                //得到当前的URL。具体实现请看最底部的函数实体
                $this->url = Pager::getUrl();
               
                //生成12345等数字形式的分页。
                if ($this->page<=10){
                        for ($i=1;$i<$this->page+1;$i++){
                                $this->thestr=$this->thestr.Pager::makepg($i,$this->pg);
                        }
                }
                else{
                        if ($this->pg<=5){
                                for ($i=1;$i<10;$i++){
                                        $this->thestr=$this->thestr.Pager::makepg($i,$this->pg);
                                }
                        }
                        else{
                                if (6+$this->pg<=$this->page){
                                        for ($i=$this->pg-4;$i<$this->pg+6;$i++){
                                                $this->thestr=$this->thestr.Pager::makepg($i,$this->pg);                       
                                        }
                                }
                                else{
                                        for ($i=$this->pg-4;$i<$this->page+1;$i++){
                                                $this->thestr=$this->thestr.Pager::makepg($i,$this->pg);
                                        }
                                       
                                }
                        }
                }
                //生成上页下页等文字链接
                $this->backstr = Pager::gotoback($this->pg);
                $this->nextstr = Pager::gotonext($this->pg,$this->page);
                echo ($this->backstr.$this->thestr.$this->nextstr." 共".$this->countall." 条,每页".$countlist."条,分".$this->page."页");
        }
        //生成数字分页的辅助函数
        function makepg($i,$pg){
                if ($i==$pg){
                        return " <font color=red><b>".$i."</b></font>";
                }
                else{
                        return " <a href=".Pager::replacepg($this->url,5,$i).">".$i."</a>";
                }
        }
        //生成上一页等信息的函数
        function gotoback($pg){
                if ($pg-1>0){
                                return $this->gotoback=" <a href=".Pager::replacepg($this->url,3,0).">首页</a> <a href=".Pager::replacepg($this->url,2,0).">上页</a>";
                }
                else{
                                return        $this->gotoback="";
                }

        }
        //生成下一页等信息的函数
        function gotonext($pg,$page){
                if ($pg < $page){
                                return "&nbsp<a href=".Pager::replacepg($this->url,1,0).">下页</a>&nbsp<a href=".Pager::replacepg($this->url,4,0).">尾页</a>";
                }
                else{
                                return "";
                }
        }
       
        //处理url中$pg的方法,用于自动生成pg=x
        function replacepg($url,$flag,$i){
                if ($flag == 1){
                        $temp_pg = $this->pg;
                        return str_replace("pg=".$temp_pg,"pg=".($this->pg+1),$url);
                }
                else if($flag == 2) {
                        $temp_pg = $this->pg;
                        return str_replace("pg=".$temp_pg,"pg=".($this->pg-1),$url);
                }
                else if($flag == 3) {
                        $temp_pg = $this->pg;
                        return str_replace("pg=".$temp_pg,"pg=1",$url);
                }
                else if($flag == 4){
                        $temp_pg = $this->pg;
                        return str_replace("pg=".$temp_pg,"pg=".$this->page,$url);
                }
                else if($flag == 5){
                        $temp_pg = $this->pg;
                        return str_replace("pg=".$temp_pg,"pg=".$i,$url);
                }
                else{
                        return $url;
                }
        }
       
       
        //获得当前URL的方法
        function  getUrl(){  
                $url="http://".$_SERVER["HTTP_HOST"];  
               
                if(isset($_SERVER["REQUEST_URI"])){  
                        $url.=$_SERVER["REQUEST_URI"];  
                }  
                else{  
                        $url.=$_SERVER["HP_SELF"];  
                        if(!empty($_SERVER["QUERY_STRING"])){  
                                $url.="?".$_SERVER["QUERY_STRING"];  
                        }  
                }  
                //在当前的URL里加入pg=x字样
                if (!ereg("(pg=|PG=|pG=|Pg=)", $url)){
                        if (!strpos($url,"?")){
                                $url = $url."?pg=1";
                        }
                        else{
                                $url = $url."&pg=1";
                        }
                }               
                return  $url;  
        }  
}
?>
*********************************************************
这里提供自用的一个引用示例~

$comment = new DoctorComment;
                $pg = @$_REQUEST["pg"];
                $pagelist  = 10; //每页显示数
                $limitFrom = 0;//开始limit的数
                if (!isset($pg)){
                        $pg=1;
                }
                if ($pg>1){
                        $limitFrom = $pagelist*($pg-1);
                }
                else{
                        $limitFrom = 0;
                }
//从mysql 数据库中取出记录集
                $comment_arr = $comment->getDoctorCommentList($limitFrom,$pagelist);
//下面这行的功能是得到所有记录总数,也就是这段分页唯一要和数据库打交道的地方。
                $commentNumber = $comment->countDoctorComment();

//在需显示处放下这行代码即可
$pager = new Pager($commentNumber,$pagelist);
2006-2-24 02:35 AM#1
查看资料  发短消息  顶部
 
linolu
新手上路
Rank: 1
初级会员



UID 68484
精华 0
积分 38
帖子 26
金钱 38 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-2-9
状态 离线
[推荐阅读] 高薪招聘项目经理!
买一送一,附上稍加修改后用于XAJAX分页的分页函数

<?php

/**
** xajax通用分页类
** 适用于无刷新页面翻页
** 未提供注释,博君一笑~~
** @author  : lino(luckfeng@gmail.com)
** @site                : http://www.ypren.com
** @version : 0.2
** @date    :  2006/2/16
**/

class Pager{
        var $url;
        var $countall;
        var $page;
        var $thestr;
        var $backstr;
        var $nextstr;
        var $pg;
        var $content;
        var $function;
        var $id;
       
       
       
        function Pager($countall,$countlist,$id,$function,$thePage){ // 参数分别为:总数,每页显示数,操作的ID,操作的方法,当前页
                $this->function = $function;
                $this->id = $id;
               
                if ($thePage==0 || $thePage==""){
                        $thePage = 1;
                }
                $this->pg = $thePage;
                $this->countall = $countall;
                if ($this->countall%$countlist!=0){
                        $this->page=sprintf("%d",$this->countall/$countlist)+1;
                }
                else{
                        $this->page=$this->countall/$countlist;
                }
               
               
                if ($this->page<=10){
                        for ($i=1;$i<$this->page+1;$i++){
                                $this->thestr=$this->thestr.Pager::makepg($i,$this->pg);
                        }
                }
                else{
                        if ($this->pg<=5){
                                for ($i=1;$i<10;$i++){
                                        $this->thestr=$this->thestr.Pager::makepg($i,$this->pg);
                                }
                        }
                        else{
                                if (6+$this->pg<=$this->page){
                                        for ($i=$this->pg-4;$i<$this->pg+6;$i++){
                                                $this->thestr=$this->thestr.Pager::makepg($i,$this->pg);
                                        }
                                }
                                else{
                                        for ($i=$this->pg-4;$i<$this->page+1;$i++){
                                                $this->thestr=$this->thestr.Pager::makepg($i,$this->pg);
                                        }
                                }
                        }
                }
                $this->backstr = Pager::gotoback($this->pg);
                $this->nextstr = Pager::gotonext($this->pg,$this->page);
                $this->content = $this->backstr.$this->thestr.$this->nextstr." 共".$this->countall." 条,每页".$countlist."条,分".$this->page."页 当前第".$thePage."页";
                return $this->content;
        }
       
        function makepg($i,$pg){
                if ($i==$pg){
                        return " <font color=red><b>".$i."</b></font>";
                }
                else{
                        return " <a href='#' onclick = 'return $this->function($this->id,$i)'>".$i."</a>";
                }
        }
       
        function gotoback($pg){
                if ($pg-1>0){
                        $pg = $pg-1;
                                return $this->gotoback=" <a href='#' onclick = 'return $this->function($this->id,1)'>首页</a> <a  href='#' onclick = 'return $this->function($this->id,".$pg.")'>上页</a>";
                }
                else{
                                return        $this->gotoback="";
                }

        }
       
        function gotonext($pg,$page){
                if ($pg < $page){
                        $pg = $pg+1;
                                return "&nbsp<a  href='#' onclick = 'return $this->function($this->id,".$pg.")'>下页</a>&nbsp<a  href='#' onclick = 'return $this->function($this->id,$page)'>尾页</a>";
                }
                else{
                                return "";
                }
        }
       
}
?>
2006-2-24 02:54 AM#2
查看资料  发短消息  顶部
 
游戏人间
版主
Rank: 7Rank: 7Rank: 7
☞风云山庄大少爷☜


UID 62639
精华 2
积分 14642
帖子 7737
金钱 14493 喜悦币
威望 20
人脉 129
阅读权限 100
注册 2004-12-21
来自 广西人在北京
状态 在线
[推荐阅读] 求adodb4.72的下载
呵呵,挺不错的.



 
群号:6025396/6025252/19520091(广西PHP交流/PHP高级编程/算法交流) 寧可在嘗試中失敗,也不在保守中成功! 不為失敗找理由,只為成功找方法! 饿踢Blog
 
2006-5-1 01:43 AM#3
查看资料  访问主页  Blog  发短消息  顶部
 
jingyun (jingyun)
新手上路
Rank: 1
初级会员



UID 66099
精华 0
积分 0
帖子 4
金钱 0 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2005-8-22
状态 离线
[推荐阅读] 【求助】2台机器自动传送文件的问题?
真的不错阿
2006-5-3 01:02 AM#4
查看资料  发短消息  顶部
 
richar (richar)
新手上路
Rank: 1
初级会员



UID 68869
精华 0
积分 5
帖子 4
金钱 5 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-2-25
状态 离线
[推荐阅读] 怎样让apache支持asp的扩展名和其它扩展名???
可惜不能分页查询结果
2006-5-18 01:22 PM#5
查看资料  发短消息  顶部
 
rjp_ww
注册会员
Rank: 2
初级会员


UID 67694
精华 0
积分 173
帖子 442
金钱 173 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-1-2
状态 离线
[推荐阅读] 给初学者提个建议吧?
不错,真够傻瓜的!



 乐色八
2006-5-19 05:04 PM#6
查看资料  发短消息  顶部
 
fengyun409
注册会员
Rank: 2


UID 72838
精华 0
积分 62
帖子 85
金钱 62 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-5-6
状态 离线
[推荐阅读] 打道回府
顶一下
8错
2006-5-19 05:16 PM#7
查看资料  发短消息  顶部
 
ganyungang
新手上路
Rank: 1



UID 73706
精华 0
积分 1
帖子 7
金钱 1 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-5-20
来自 自然
状态 离线
[推荐阅读] 多附件上传删除的问题
和适合我学,啊啊,谢谢linolu!
2006-5-20 07:26 PM#8
查看资料  发短消息  顶部
 
fnet
高级会员
Rank: 4
**村大队书记



UID 65788
精华 0
积分 718
帖子 785
金钱 718 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2005-8-12
状态 离线
[推荐阅读] 求助: 关于数组问题~
不错不错比我自己的好



JAVA
2006-5-21 09:40 AM#9
查看资料  访问主页  发短消息  QQ  顶部
 
zscmeditate
新手上路
Rank: 1



UID 75068
精华 0
积分 0
帖子 1
金钱 0 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-6-16
状态 离线
[推荐阅读] 北京外企招精通linux php mysql开发人员
可惜不能分页查询结果

可惜不能分页查询结果,

我现在用的这个分页类也使这样的,不过可以用cookie来缓存查询语句,以实现这种效果,个人感觉cookie用在数据库方面的页面上面就有些不爽了。打算用文本数据库代替cookie
2006-6-16 02:58 PM#10
查看资料  发短消息  顶部
 17  1/2  1  2  > 
     


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


 




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

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