/*
/*
* $allPage 页面显示的总页数
* $allDatas 总条目
* $page 当前页
* $epage 每页条数
* $url 分页链接
*/
public function getPage($data=array())
{
$str = '<div style="padding:20px;1px; font-size:20px;">';
//上一页、下一页链接
$prev = $data['urls'].($data['page']-1);
$next = $data['urls'].($data['page']+1);
//开始页数、结束页数
$start = (int)($data['page'] - floor($data['allPage']/2));
$start = $start<1 ? 1 : $start;
if($start<=0)
{
$start = 1;
$data['page'] = 1;
}
$end = (int)($data['page'] + floor($data['allPage']/2));
if($end-$start<$data['allPage']) {
$end = $start+$data['allPage']-1;
}
if(($data['allPage']-$end)<floor($data['allPage']/2)) {
$start = $end-$data['allPage'];
}
$allDataPage = (int)(ceil($data['total']/$data['epage']));
//$end = $end>$allDataPage ? $allDataPage : $end;
if($end>$allDataPage)
{
$end = $allDataPage;
$data['page'] = $allDataPage;
}
$str .= '<a style="padding:10px; color:red; text-decoration:none" href="'.$prev.'"><span>上一页</span></a>';
$startSlice = ($data['page']-1)*$data['epage'];
$pageDatas = array_slice($data['allDatas'],$startSlice, $data['epage']);
for ($i=$start; $i <=$end ; $i++) {
//循环链接
$pageLink = $data['urls'].$i;
$str .= '<a style="padding:10px 5px; color:red; text-decoration:none" href="'.$pageLink.'">'.$i.'</a>';
}
$str .= '<a style="padding:10px; color:red; text-decoration:none" href="'.$next.'"><span>下一页</span></a>';
$result['pageDatas'] = $pageDatas;
$result['htmlData'] = $str;
return $result;
}
运行示例:
主要思想:这个方法的主要作用是生成了简单的分页链接。如上图的底部中的 上一页+页码+下一页 的实现。与页面上的列表信息数据没有关系。渲染页面的时候,要把页面中所有的数据查询出来全部传入以上的方法中,渲染页面就用分页方法中返回的数据。前端代码如下:
<?php
defined('BASEPATH') or exit("No direct script access allowed");
?>
<html lang="en">
<head>
<meta charset="utf-8">
<title>数据分页</title>
</head>
<body>
<form action="/index.php/Pages/add">
<button type="submit">增加数据</button>
<table border="1px;" cellspacing="0" border-color="red">
<thead>分类列表</thead>
<tr>
<td>ID</td>
<td>name</td>
<td>gb_class_id</td>
</tr>
<?php foreach ($allDatas as $key=>$value){ ?>
<tr>
<td><?php echo $value->id; ?></td>
<td><?php echo $value->name; ?></td>
<td><?php echo $value->gb_class_id; ?></td>
</tr>
<?php } ?>
</table>
<?php echo $htmlData; ?>
</form>
</body>
<style>
.npl a{margin-right: 15px;float:left; padding: 8px 15px; border:1px solid #e5e5e5; margin-bottom: 10px}
</style>
</html>