一:示例代码
示例代码是用PHP编写的,但分页的思想是一样的。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>分页</title>
</head>
<body>
<div>
<?php
$page = isset($_GET['page']) ? $_GET['page'] : 1;
echo "第{$page}页<br />" ;
echo getPagingString($page, 100);
?>
</div>
</body>
</html>
<?php
/**
* 获取分页字符串
*
* @param int $currentPage 当前页码
* @param int $totalPage 总页码
*/
function getPagingString($currentPage, $totalPage){
//分页字符串
$pageingString = '';
if($totalPage == 1) return $pageingString;
$url = getUrl(array('c', 'm', 'page'));
//首页
$pageingString .= "<a href='{$url}&page=1'>首页</a> ";
//上一页
$prev = ($currentPage > 1) ? $currentPage-1 : 1;
$pageingString .= "<a href='{$url}&page={$prev}'>上一页</a> ";
//往前5页
for($i=5; $i>=1 ; $i--){
$p = $currentPage - $i;
if($p > 1) $pageingString .= "<a href='{$url}&page={$p}'>{$p}</a> ";
}
//当前页
$pageingString .= "<a style='color:red;'>{$currentPage}</a> ";
//往后5页
for($i=1; $i<=5 ; $i++){
$p = $currentPage + $i;
if($p < $totalPage) $pageingString .= "<a href='{$url}&page={$p}'>{$p}</a> ";
}
//下一页
$next = ($currentPage < $totalPage) ? $currentPage+1 : $totalPage;
$pageingString .= "<a href='{$url}&page={$next}'>下一页</a> ";
//尾页
$pageingString .= "<a href='{$url}&page={$totalPage}'>尾页</a>";
//返回分页字符串
return $pageingString;
}
/**
* 获取过滤参数后的url
*
* @param array $filter 过滤器
* @return string
*/
function getUrl($filter = array()){
//控制器
$controller = isset($_GET['c']) ? $_GET['c'] : 'c';
//方法
$method = isset($_GET['m']) ? $_GET['m'] : 'm';
//地址
$file = trim($_SERVER["PHP_SELF"], '/');
$url = $file . "?c={$controller}&m={$method}";
//拼接参数
$params = $_GET;
foreach ($params as $key => $value){
if(in_array($key, $filter)) continue;
$url .= "&{$key}={$value}";
}
return $url;
}
二:分页思想简单阐述
任何数据列表分页其实都是处理page(页码)参数的值,其它参数的值都是不变的,所以本示例就是获取到url中的所有参数,然后把page参数过滤掉,再把page参数重新拼接上,个人觉得这种分页思想适合所有的数据列表分页,认真阅读本篇博客的示例代码,深入理解一下,分页将不再是难题。
三:示例代码测试方法
在项目的根目录建立一个php文件,如:paging.php,然后把代码拷贝到新建的php文件中,访问新建文件即可看到效果,如下图。