Discuz中的分页函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
这个分页函数是discuz中的,感觉这个分页函数相当经典,而且看到好多其他程序的分页效果也是用的这个函数。读完这个分页函数后给我的感觉是这个分页函数做的太全面了,作者考虑的太全面了,在用的同时也给我们写程序树立了个榜样,


//先看下几个参数吧    
//$num 为总共的条数  比如说这个分类下共有15篇文章    
// $perpage为每页要显示的条数    
//$curpage为当前的页数    
//$mpurl为url的除去表示页数变量的一部分,    
//$page为$multipage这个字符串中要显示的表示页数的变量个数    
//$maxpages为最大的页数值  此函数最后有一句$maxpage = $realpages;    
function multi($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = TRUE, $simple = FALSE) {    
    global $maxpage;    
    $ajaxtarget = !empty($_GET['ajaxtarget']) ? " ajaxtarget="".dhtmlspecialchars($_GET['ajaxtarget'])."" " : '';    
   
    $multipage = '';    
    $mpurl .= strpos($mpurl, '?') ? '&' : '?';    
    $realpages = 1;    
     //判断总条数是否大于设置的每页要显示的条数    
    if($num > $perpage) {    
    //设置在$multipage中当前页数之前还要输出几个页数    
        $offset = 2;    
   
        $realpages = @ceil($num / $perpage);    
    //总共的页数(不知道$maxpages的意思),这里假设是15条    
        $pages = $maxpages && $maxpages < $realpages ? $maxpages : $realpages;    
    //如果总页数小于multipage中要输出的页数$page,则只输出到实际页数为止      
        if($page > $pages) {    
            $from = 1;    
            $to = $pages;    
    //如果大于的话,就要输出$page个页数(我们假设的的15条就符合这个条件)    
        } else {    
            $from = $curpage - $offset;    
            $to = $from + $page - 1;    
            //假设curpage为4,目前为止,from为2,to为11    
            //下面假设curpage为1    
         
            if($from < 1) {    
                $to = $curpage + 1 - $from;****不明白***)    
                $from = 1;    
                //目前为止from为1,to为3    
                if($to - $from < $page) {    
                    //因为这里的前提条件是总条数大于page,所以,如果$to-$from小于page的话显然达不到目的,应把$to设置为$page    
                    $to = $page;    
                }//目前为止 from为1 ,to为10    
            } elseif($to > $pages) {//to是不可以大于总页数的    
                $from = $pages - $page + 1;    
                $to = $pages;    
            }    
         
        }    
   
        $multipage = ($curpage - $offset > 1 && $pages > $page ? ');    
        for($i = $from; $i <= $to; $i++) {    
            $multipage .= $i == $curpage ? '
'.$i.'' :    
                '
).    
            ($to < $pages ? ''.(!$simple ? ' '.$num.' ' : '').$multipage.' ' : '';    
    }    
    $maxpage = $realpages;    
    return $multipage;    
}

喜欢这篇文章吗?

请订阅本站 RSS feed填写您的邮件地址,订阅我们的精彩内容:

随机日志

回复 (0)

› 尚无评论。

发表评论 修改评论取消编辑

允许使用的标签 - 您可以在评论中使用如下的 HTML 标签以及属性。

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 :wink:  :-|  :-x  :twisted:  :)  8-O  :(  :roll:  :-P  :oops:  :-o  :mrgreen:  :lol:  :idea:  :-D  :evil:  :cry:  8)  :arrow:  :-?  :?:  :!:

引用通告 (0)

› 尚无引用通告。

开灯