首页 > 语言 > PHP > 正文

php分页程序paginator程序代码

2024-09-04 11:44:02
字体:
来源:转载
供稿:网友
  1. <?php  
  2.    
  3. class paginator {  
  4.    
  5.     function __construct () {  
  6.    
  7.     }  
  8.    
  9.     static function render($page_typearray $args = array()) {  
  10.         $html = '';  
  11.         switch ($page_type)  
  12.         {  
  13.             case '1':  
  14.                 $html =  page_1($channel_code$page_num$cur_page$per_group$base_url$n$v);  
  15.                 break;  
  16.             case '2':  
  17.                 $html =  fpage($row_num$pagesize$page$url);  
  18.                 break;  
  19.             case '3':  
  20.                 break;  
  21.    
  22.             default:  
  23.                 $html = page($num$perpage$curpage$mpurl$hiddenFrom='');  
  24.         }  
  25.    
  26.         return $html;  
  27.     }  
  28.    
  29.    
  30.    
  31.     //函数1:根据总页数,当前页,和页分组及url产生分页导航  
  32.     function page_1($channel_code$page_num$cur_page$per_group$base_url$n$v) {  
  33.         // 分页函数参数列表(有多少页,当前页,每页多少个 ,链接地址)  
  34.         $base_url .= strpos($base_url'?') ? '&' : '?';    //如果有?,则添加&,否则加?  
  35.    
  36.         $page_val = "";  
  37.    
  38.         if ($page_num < 1) {  
  39.             return $page_val//如果小于1,返回空  
  40.         } elseif ($page_num == 1) {  
  41.             return $page_val = 1;   //如果等于1,返回1  
  42.         }  
  43.    
  44.         //分组  
  45.    
  46.         $group_ok = !(($page_num-1) % ($per_group-1));  //没有余数  
  47.         // 计算一共有多少组  
  48.         if($group_ok) {  
  49.             $group_num = ($page_num-1)/($per_group-1);  
  50.         }else {  
  51.             $group_num = ceil(($page_num-1) / ($per_group-1));  
  52.         } //判断当前页是否为一组的最后一个  
  53.    
  54.    
  55.         //组数  
  56.         $is_last_page = !(($cur_page-1) % ($per_group-1)); //计算当前在的组数  
  57.         if ($is_last_page) {  
  58.             $cur_group = ($cur_page-1) / ($per_group-1) + 1;  
  59.         } else {  
  60.             $cur_group = ceil(($cur_page-1) / ($per_group-1));  
  61.         }  
  62.    
  63.         // 计算显示的起始页 ,这个关键  
  64.         $from = ($cur_group - 1) * ($per_group-1) + 1;  
  65.         $from = $cur_group <= 1 ? 1 :$from;  
  66.    
  67.         $to = $from + $per_group;  
  68.         $to = $to > $page_num ? $page_num + 1 : $to;  
  69.    
  70.         for($a = $from$a < $to$a++) {  
  71.             if ($a != $cur_page) {  
  72.    
  73.                 //不是当前页  
  74.                 $page_val .= '<li><a href ="' . $base_url . 'channel='.$channel_code.'&n='.$n.'&v='.$v.'&page=' . $a . '">' . $a . '</a></li>';  
  75.             } else {  
  76.                 //当前页  
  77.                 $page_val .='<li class="current">'$a .'</li>';  
  78.             }  
  79.         }  
  80.    
  81.         //上一页下一页首页尾页  
  82.         $next = $cur_page + 1;    //当前页+1  
  83.         $prev = $cur_page-1;   //当前页-1  
  84.    
  85.         if ($cur_page != $page_num) {  
  86.             //当前页不是最后一页  
  87.             $page_val .= '<span><a href ="' . $base_url . 'channel='.$channel_code.'&n='.$n.'&v='.$v.'&page=' . $next . '">' . '下一页' . '</a></span>';  
  88.             $page_val .= '<span><a href ="' . $base_url . 'channel='.$channel_code.'&n='.$n.'&v='.$v.'&page=' . $page_num . '">' . '>>' . '</a></span>'//尾页  
  89.    
  90.         }  
  91.         if ($cur_page != 1){  
  92.    
  93.             //不是第一页,加上前面的内容  
  94.             $page_val = '<span><a href ="' . $base_url . 'channel='.$channel_code.'&n='.$n.'&v='.$v.'&page=' . $prev . '">' . '上一页' . '</a></span>' . $page_val;  
  95.             $page_val = '<span><a href ="' . $base_url . 'channel='.$channel_code.'&n='.$n.'&v='.$v.'&page=1">' . '<<' . '</a></span>' . $page_val//首页  
  96.    
  97.         }  
  98.         $page_val = '<ul class="page_nav">'.$page_val.'</ul>';  
  99.    
  100.    
  101.         return $page_val;  
  102.     }  
  103.    
  104.    
  105.    
  106.    
  107.     // 函数2:根据记录数,页列清数,当前页,url年成分页  
  108.     function fpage($row_num$pagesize$page$url) {  
  109.         //$page,当前页;$row_num记录总数;$pagesize:每页记录数;$url记录页;  
  110.         //如果,如果有作数,则取加1  
  111.         $page_count = $row_num % $pagesize?intval($row_num / $pagesize) + 1:intval($row_num / $pagesize);  
  112.    
  113.         if ($page_count == 1) {  
  114.             $page_string = "第一页|上一页|下一页|尾页";  
  115.         } else {  
  116.             //如果不止一页  
  117.             if ($page == 1) {  
  118.                 //第一页显示  
  119.                 $page_string = " <a href=" . $url . "?page=1>第一页 </a>|上一页| <a href=" . $url . "?page=" . ($page + 1) . ">下一页 </a>| <a href=" . $url . "?page=" . $page_count . ">尾页 </a>";  
  120.             }  
  121.             if (($page > 1) and ($page < $page_count)) {  
  122.                 $page_string = " <a href=" . $url . "?page=1>第一页 </a>| <a href=" . $url . "?page=" . ($page-1) . ">上一页 </a>| <a href=" . $url . "?page=" .  
  123.                 ($page + 1) . ">下一页 </a>| <a href=" . $url . "?page=" . $page_count . ">尾页 </a>";  
  124.             }  
  125.             if ($page == $page_count) {  
  126.                 $page_string = " <a href=" . $url . "?page=1>第一页 </a>| <a href=" . $url . "?page=" . ($page-1) . ">上一页 </a>|下一页| <a href=" . $url . "?page=" . $page_count . ">尾页 </a>";  
  127.             }  
  128.         }  
  129.         $page_str = $page_string . ("," . $page . "/" . $page_count . "页");  
  130.         echo " <br> <p align=center>" . $page_str . " </p>";  
  131.     }  
  132.    
  133.    
  134.     /**  
  135.  * 分页函数  
  136.  *  
  137.  * @param int $num:记录总数  
  138.  * @param int $perpage:每页记录  
  139.  * @param int $curpage:当前页  
  140.  * @param string $mpurl:路径url  
  141.  * @param unknown_type $hiddenFrom  
  142.  * @return string  
  143.  */ 
  144.     function page($num$perpage$curpage$mpurl,$hiddenFrom='') {  
  145.         $multipage = '';  
  146.         //恢复  
  147.         $mpurl .= strpos($mpurl'?') ? '&' : '?';  
  148.    
  149.         if($num > $perpage) {  
  150.             $page = 10;  
  151.             $offset = 2;  
  152.    
  153.             $pages = @ceil($num / $perpage);  //总页数  
  154.    
  155.             if($page > $pages) {  
  156.                 $from = 1;  
  157.                 $to = $pages;  
  158.             } else {  
  159.                 //如果总页数>10  
  160.                 $from = $curpage - $offset;   //当前页-2  
  161.                 $to = $from + $page - 1;    //当前页+10-3  
  162.    
  163.                 if($from < 1) {  
  164.    
  165.                     $to = $curpage + 1 - $from;  
  166.                     $from = 1;  
  167.                     if($to - $from < $page) {  
  168.                         $to = $page;  
  169.                     }  
  170.                 } elseif($to > $pages) {  
  171.                     $from = $pages - $page + 1;  
  172.                     $to = $pages;  
  173.                 }  
  174.             }  
  175.    
  176.             if ($hiddenFrom) {  
  177.                 $multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="#" '.js_page($hiddenFrom,1).'>首页</a> ' : '').  
  178.                 ($curpage > 1 ? ' <a href="#" '.js_page($hiddenFrom,$curpage - 1).'>‹‹上一页</a> ' : '');  
  179.                 for($i = $from$i <= $to$i++) {  
  180.                     $multipage .= $i == $curpage ? '<span>'.$i.'</span> ' :  
  181.                     '<a href="#" '.js_page($hiddenFrom,$i).'>'.$i.'</a> ';  
  182.                 }  
  183.    
  184.                 $multipage .= ($curpage < $pages ? '<a href="#" '.js_page($hiddenFrom,$curpage + 1).'>下一页››</a>' : '').  
  185.                 ($to < $pages ? '<a href="#" '.js_page($hiddenFrom,$pages).'> 末页</a>' : '');  
  186.                 $multipage = $multipage ? '<div class="list-page">'.$multipage.'</div>' : '';  
  187.             } else {  
  188.    
  189.                 $multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="'.$mpurl.'page=1">首页</a> ' : '').  
  190.                 ($curpage > 1 ? ' <a href="'.$mpurl.'page='.($curpage - 1).'">‹‹上一页</a> ' : '');  
  191.    
  192.                 for($i = $from$i <= $to$i++) {  
  193.                     $multipage .= $i == $curpage ? '<span>'.$i.'</span> ' :  
  194.                     '<a href="'.$mpurl.'page='.$i.'">'.$i.'</a> ';  
  195.                 }  
  196.    
  197.                 $multipage .= ($curpage < $pages ? '<a href="'.$mpurl.'page='.($curpage + 1).'">下一页››</a>' : '').  
  198.                 ($to < $pages ? '<a href="'.$mpurl.'page='.$pages.'"> 末页</a>' : '');  
  199.                 $multipage = $multipage ? '<div class="list-page">'.$multipage.'</div>' : '';  
  200.             }  
  201.         }  
  202.         return $multipage;  
  203.     }  
  204.     //暂不用  
  205.     function page_get_start($page$ppp$totalnum) {  
  206.         $totalpage = ceil($totalnum / $ppp);  
  207.         $page =  max(1, min($totalpageintval($page)));  
  208.         return ($page - 1) * $ppp;  
  209.     }  
  210.     //暂不用  
  211.     function js_page($hiddenFrom,$page)  
  212.     {  
  213.         if ($hiddenFrom) {  
  214.             return ' onclick=javascript:$("#page").val("'.$page.'");$("#'.$hiddenFrom.'").submit(); ';  
  215.         }  
  216.     }  
  217. }  
  218. ?> 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表