CI实现简单的分页原理

2023年1月14日13:29:22
/*
/*
     * $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;
    }

运行示例:
CI实现简单的分页原理
主要思想:这个方法的主要作用是生成了简单的分页链接。如上图的底部中的 上一页+页码+下一页 的实现。与页面上的列表信息数据没有关系。渲染页面的时候,要把页面中所有的数据查询出来全部传入以上的方法中,渲染页面就用分页方法中返回的数据。前端代码如下:

<?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>

  • 作者:Wake_me_Up123
  • 原文链接:https://blog.csdn.net/Wake_me_Up123/article/details/83024645
    更新时间:2023年1月14日13:29:22 ,共 2060 字。