• ThinkPHP---TP功能类之分页


    (1)核心

    数据分页通过limit语法实现

    (2)分页类

    ThinkPHP里系统封装好了分页类:Page.class.php

    (3)代码分析

    位置:Think/Page.class.php,

    ①查看相关属性

    namespace Think;
    class Page{
    //对外开放属性
    public $firstRow; // 起始行数 public $listRows; // 列表每页显示行数 limit(start,rows) public $parameter; // 分页跳转时要带的参数 public $totalRows; // 总行数 public $totalPages; // 分页总页面数 = 总行数/每页显示个数 public $rollPage = 11;// 分页栏每页显示的页数(模板页面上显示的页码数) public $lastSuffix = true; // 最后一页是否显示总页数 //以下私有属性 private $p = 'p'; //分页参数名 private $url = ''; //当前链接URL private $nowPage = 1;
    ...... }

     ②分页构造方法:三个参数,至少传递第一个参数(总记录数),第二个参数可选(每页显示的记录数,方法里的默认值为20)

         /* 架构函数:@param array $totalRows  总的记录数;@param array $listRows  每页显示记录数;@param array $parameter  分页跳转的参数*/
        public function __construct($totalRows, $listRows=20, $parameter = array()) {
            C('VAR_PAGE') && $this->p = C('VAR_PAGE'); //设置分页参数名称
            /* 基础设置 */
            $this->totalRows  = $totalRows; //设置总记录数
            $this->listRows   = $listRows;  //设置每页显示行数
            $this->parameter  = empty($parameter) ? $_GET : $parameter;
            $this->nowPage    = empty($_GET[$this->p]) ? 1 : intval($_GET[$this->p]);
            $this->nowPage    = $this->nowPage>0 ? $this->nowPage : 1;
            $this->firstRow   = $this->listRows * ($this->nowPage - 1);
        }

    ③setConfig方法:通过public权限类型的Config方法,来设置私有属性private $config(分页显示定制)

    ④show方法:生成页码及页码上的URL链接

    方法总结:能用的方法:构造方法(实例化时用),setConfig方法(设置提示文字及分页样式时用),show方法(生成页码及页码上URL链接时用)

                     分析后也是三个方法,和验证码功能一样(构造方法---配置(可以传递一个数组,用于和其成员属性config合并,生成新配置)、check方法---校验、entry方法---输出),其他方法(例如加密验证码、绘制背景图、画杂点等)均为私密方法,不对外开放

    【四】制作分页效果步骤

    输入数据分页--查阅手册---可以发现TP实现数据分页有两种方法:①利用Page类和limit方法实现;②分页类和Page方法实现,开发里一般用第一种方法

    $User = M('User'); // 实例化User对象
    $count      = $User->where('status=1')->count();// 查询满足要求的总记录数
    $Page       = new ThinkPage($count,25);// 实例化分页类 传入总记录数和每页显示的记录数(25)
    $show       = $Page->show();// 分页显示输出
    // 进行分页数据查询 注意limit方法的参数要使用Page类的属性
    $list = $User->where('status=1')->order('create_time')->limit($Page->firstRow.','.$Page->listRows)->select();
    $this->assign('list',$list);// 赋值数据集
    $this->assign('page',$show);// 赋值分页输出
    $this->display(); // 输出模板

    下面将上诉代码分布介绍:

    ①实例化User类生成对象,连接数据表

    ②查询总的记录数

    ③实例化分页类,传入总记录数[每页显示的记录数,默认每页显示20条记录数(可选)]

    [可选步骤]只能放到③----------④之间,定制显示分页提示文字setConfig

    ④通过show方法输出页码数和分页页码连接

    ⑤使用limit方法进行分页查询,注意:参数是Page类的属性

    ⑥使用assign将查询的数据和分页连接数传递给模板

    ⑦模板展示

    【五】使用数据分页实现数据的分页功能案例

    http://www.cnblogs.com/jianxian/p/8685945.html

  • 相关阅读:
    oracle批量更新之使用游标进行分批次更新的5种方式及速度比对
    oracle 两个网络不通的远程数据库如何将一个库中的表数据导入到另一个库中?
    惠星球史上最全攻略,手把手带你飞
    oracle 批量删除表数据的4种方式
    zabbix client安装配置执行
    Neural Networks for Machine Learning by Geoffrey Hinton (4)
    代码坏味道之过长的參数列
    Codeforces Round #313 (Div. 1) Gerald's Hexagon
    java界面编程(3) ------ 控制布局
    数据结构实验之队列一:排队买饭
  • 原文地址:https://www.cnblogs.com/fightjianxian/p/8686028.html
Copyright © 2020-2023  润新知