/* /* * $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>