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)