php分页程序paginator程序代码
本文章来给大家介绍一个paginator的php分页程序代码,有需要的朋友可进入参考。
<?php
class paginator {
function __construct() {
}
static function render($page_type, array $args = array()) {
$html = '';
switch ($page_type) {
case '1':
$html = page_1($channel_code, $page_num, $cur_page, $per_group, $base_url, $n, $v);
break;
case '2':
$html = fpage($row_num, $pagesize, $page, $url);
break;
case '3':
break;
default:
$html = page($num, $perpage, $curpage, $mpurl, $hiddenFrom = '');
}
return $html;
}
//函数1:根据总页数,当前页,和页分组及url产生分页导航
function page_1($channel_code, $page_num, $cur_page, $per_group, $base_url, $n, $v) {
// 分页函数参数列表(有多少页,当前页,每页多少个 ,链接地址)
$base_url.= strpos($base_url, '?') ? '&' : '?'; //如果有?,则添加&,否则加?
$page_val = "";
if ($page_num < 1) {
return $page_val; //如果小于1,返回空
} elseif ($page_num == 1) {
return $page_val = 1; //如果等于1,返回1
}
//分组
$group_ok = !(($page_num - 1) % ($per_group - 1)); //没有余数
// 计算一共有多少组
if ($group_ok) {
$group_num = ($page_num - 1) / ($per_group - 1);
} else {
$group_num = ceil(($page_num - 1) / ($per_group - 1));
} //判断当前页是否为一组的最后一个
//组数
$is_last_page = !(($cur_page - 1) % ($per_group - 1)); //计算当前在的组数
if ($is_last_page) {
$cur_group = ($cur_page - 1) / ($per_group - 1) + 1;
} else {
$cur_group = ceil(($cur_page - 1) / ($per_group - 1));
}
// 计算显示的起始页 ,这个关键
$from = ($cur_group - 1) * ($per_group - 1) + 1;
$from = $cur_group <= 1 ? 1 : $from;
$to = $from + $per_group;
$to = $to > $page_num ? $page_num + 1 : $to;
for ($a = $from; $a < $to; $a++) {
if ($a != $cur_page) {
//不是当前页
$page_val.= '<li><a href ="' . $base_url . 'channel=' . $channel_code . '&n=' . $n . '&v=' . $v . '&page=' . $a . '">' . $a . '</a></li>';
} else {
//当前页
$page_val.= '<li class="current">' . $a . '</li>';
}
}
//上一页下一页首页尾页
$next = $cur_page + 1; //当前页+1
$prev = $cur_page - 1; //当前页-1
if ($cur_page != $page_num) {
//当前页不是最后一页
$page_val.= '<span><a href ="' . $base_url . 'channel=' . $channel_code . '&n=' . $n . '&v=' . $v . '&page=' . $next . '">' . '下一页' . '</a></span>';
$page_val.= '<span><a href ="' . $base_url . 'channel=' . $channel_code . '&n=' . $n . '&v=' . $v . '&page=' . $page_num . '">' . '>>' . '</a></span>'; //尾页
}
if ($cur_page != 1) {
//不是第一页,加上前面的内容
$page_val = '<span><a href ="' . $base_url . 'channel=' . $channel_code . '&n=' . $n . '&v=' . $v . '&page=' . $prev . '">' . '上一页' . '</a></span>' . $page_val;
$page_val = '<span><a href ="' . $base_url . 'channel=' . $channel_code . '&n=' . $n . '&v=' . $v . '&page=1">' . '<<' . '</a></span>' . $page_val; //首页
}
$page_val = '<ul class="page_nav">' . $page_val . '</ul>';
return $page_val;
}
// 函数2:根据记录数,页列清数,当前页,url年成分页
function fpage($row_num, $pagesize, $page, $url) {
//$page,当前页;$row_num记录总数;$pagesize:每页记录数;$url记录页;
//如果,如果有作数,则取加1
$page_count = $row_num % $pagesize ? intval($row_num / $pagesize) + 1 : intval($row_num / $pagesize);
if ($page_count == 1) {
$page_string = "第一页|上一页|下一页|尾页";
} else {
//如果不止一页
if ($page == 1) {
//第一页显示
$page_string = " <a href=" . $url . "?page=1>第一页 </a>|上一页| <a href=" . $url . "?page=" . ($page + 1) . ">下一页 </a>| <a href=" . $url . "?page=" . $page_count . ">尾页 </a>";
}
if (($page > 1) and ($page < $page_count)) {
$page_string = " <a href=" . $url . "?page=1>第一页 </a>| <a href=" . $url . "?page=" . ($page - 1) . ">上一页 </a>| <a href=" . $url . "?page=" . ($page + 1) . ">下一页 </a>| <a href=" . $url . "?page=" . $page_count . ">尾页 </a>";
}
if ($page == $page_count) {
$page_string = " <a href=" . $url . "?page=1>第一页 </a>| <a href=" . $url . "?page=" . ($page - 1) . ">上一页 </a>|下一页| <a href=" . $url . "?page=" . $page_count . ">尾页 </a>";
}
}
$page_str = $page_string . ("," . $page . "/" . $page_count . "页");
echo " <br> <p align=center>" . $page_str . " </p>";
}
/**
* 分页函数
*
* @param int $num:记录总数
* @param int $perpage:每页记录
* @param int $curpage:当前页
* @param string $mpurl:路径url
* @param unknown_type $hiddenFrom
* @return string
*/
function page($num, $perpage, $curpage, $mpurl, $hiddenFrom = '') {
$multipage = '';
//恢复
$mpurl.= strpos($mpurl, '?') ? '&' : '?';
if ($num > $perpage) {
$page = 10;
$offset = 2;
$pages = @ceil($num / $perpage); //总页数
if ($page > $pages) {
$from = 1;
$to = $pages;
} else {
//如果总页数>10
$from = $curpage - $offset; //当前页-2
$to = $from + $page - 1; //当前页+10-3
if ($from < 1) {
$to = $curpage + 1 - $from;
$from = 1;
if ($to - $from < $page) {
$to = $page;
}
} elseif ($to > $pages) {
$from = $pages - $page + 1;
$to = $pages;
}
}
if ($hiddenFrom) {
$multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="#" ' . js_page($hiddenFrom, 1) . '>首页</a> ' : '') . ($curpage > 1 ? ' <a href="#" ' . js_page($hiddenFrom, $curpage - 1) . '>‹‹上一页</a> ' : '');
for ($i = $from; $i <= $to; $i++) {
$multipage.= $i == $curpage ? '<span>' . $i . '</span> ' : '<a href="#" ' . js_page($hiddenFrom, $i) . '>' . $i . '</a> ';
}
$multipage.= ($curpage < $pages ? '<a href="#" ' . js_page($hiddenFrom, $curpage + 1) . '>下一页››</a>' : '') . ($to < $pages ? '<a href="#" ' . js_page($hiddenFrom, $pages) . '> 末页</a>' : '');
$multipage = $multipage ? '<div class="list-page">' . $multipage . '</div>' : '';
} else {
$multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="' . $mpurl . 'page=1">首页</a> ' : '') . ($curpage > 1 ? ' <a href="' . $mpurl . 'page=' . ($curpage - 1) . '">‹‹上一页</a> ' : '');
for ($i = $from; $i <= $to; $i++) {
$multipage.= $i == $curpage ? '<span>' . $i . '</span> ' : '<a href="' . $mpurl . 'page=' . $i . '">' . $i . '</a> ';
}
$multipage.= ($curpage < $pages ? '<a href="' . $mpurl . 'page=' . ($curpage + 1) . '">下一页››</a>' : '') . ($to < $pages ? '<a href="' . $mpurl . 'page=' . $pages . '"> 末页</a>' : '');
$multipage = $multipage ? '<div class="list-page">' . $multipage . '</div>' : '';
}
}
return $multipage;
}
//暂不用
function page_get_start($page, $ppp, $totalnum) {
$totalpage = ceil($totalnum / $ppp);
$page = max(1, min($totalpage, intval($page)));
return ($page - 1) * $ppp;
}
//暂不用
function js_page($hiddenFrom, $page) {
if ($hiddenFrom) {
return ' onclick=javascript:$("#page").val("' . $page . '");$("#' . $hiddenFrom . '").submit(); ';
}
}
}
?>本文地址:http://www.phprm.com/develop/53935.html
转载随意,但请附上文章地址:-)