TP3.2框架分页相关实现方法分析


Posted in PHP onJune 03, 2020

本文实例讲述了TP3.2框架分页相关实现方法。分享给大家供大家参考,具体如下:

需要用到分页的继承这个控制器即可

<?php
namespace Home\Controller;
use Think\Controller;
class BaseController extends Controller {
    /**
     * 基础分页的相同代码封装,使前台的代码更少
     * @param $count 要分页的总记录数
     * @param int $pagesize 每页查询条数
     * @return \Think\Page
    */
    function getpage($count, $pagesize = 20,$waps) {
          $Page = new \Think\Page($count,$pagesize,$waps);
     $Page->rollPage = 5;
     $Page->setConfig('header', '<li class="rows">第<b>%NOW_PAGE%</b>页/共<b>%TOTAL_PAGE%</b>页</li>');
       $Page->setConfig('prev', '上一页');
       $Page->setConfig('next', '下一页');
     $Page->setConfig('last', '末页');
         $Page->setConfig('first', '首页');
         $Page->setConfig('theme', '%FIRST%%UP_PAGE%%LINK_PAGE%%DOWN_PAGE%%END%%HEADER%');
         $Page->lastSuffix = false;//最后一页不显示为总页数
         return $Page;
    }
    /**
     * @param $model     模型
     * @param $map         where条件
     * @param $find      0 select 1=find 2=关联表
     * @return $list     数组
    */
    function _select($model,$map,$order='',$field="",$find="0",$limit=20,$join,$param){
        $waps = $param;
        if(empty($model) && empty($map)){
            $this->list = array();
        }else{
            if($find == 0){
                $count = $model->where($map)->count();
                $Page = $this->getpage($count,$limit,$waps);
                if($Page->firstRow < 0){
                    $Page->firstRow = 0;
                }
                if($order != ""){
                    $this->list = $model->field($field)->where($map)->order($order)->limit($Page->firstRow. ',' . $Page->listRows)->select();
                }else{
                    $this->list = $model->field($field)->where($map)->limit($Page->firstRow. ',' . $Page->listRows)->select();    
                }
                $this->page = $Page->show();
            }else if($find == 1){
                $this->list = $model->field($field)->where($map)->find();
            }else if($find == 3){
                $count = $model->alias("t1")->join($join)->where($map)->count(); 
                $Page = $this->getpage($count,$limit,$waps);
                if($Page->firstRow < 0){
                    $Page->firstRow = 0;
                }
                if($order != ""){
                    $this->list = $model->alias("t1")->join($join)->field($field)->where($map)->order($order)->limit($Page->firstRow. ',' . $Page->listRows)->select();
                }else{
                    $this->list = $model->alias("t1")->join($join)->field($field)->where($map)->limit($Page->firstRow. ',' . $Page->listRows)->select();    
                }
                $this->page = $Page->show();
            }else if($find == 4){
                if($order != ""){
                    $this->list = $model->alias("t1")->join($join)->field($field)->where($map)->order($order)->limit($Page->firstRow. ',' . $Page->listRows)->find();
                }else{
                    $this->list = $model->alias("t1")->join($join)->field($field)->where($map)->limit($Page->firstRow. ',' . $Page->listRows)->find();    
                }
            }
            $this->limit = $Page->firstRow;
            $this->assign("listinfo",$this->list);
            $this->assign("page",$this->page);
            return($this->list);
        }
    }
}

控制器中先继承后使用。

if($this->txt_keyword){
    $where['m_title'] = array('like','%'.$this->txt_keyword.'%');
}
 
$where['status'] = $param['status'] = 0;
$this->_select($this->information_mod,$where,'','*',0,10,'',$param);
$this->display();

模板中

<div class="hg_page" >
   {$page}
</div>

分页样式

<style>
 .hg_page .first, .hg_page .current, .hg_page .num, .hg_page .next, .hg_page .end, .hg_page .rows, .hg_page .prev{
  float: left;
  height: 37px;
  padding: 0 15px;
  border: 1px solid #e5e5e5;
  line-height: 37px;
  margin: 0 3px;
 }
 .hg_page{
  text-align: center;
  height: 37px;
  margin:0 auto;
  margin-top: 30px;
  margin-bottom: 20px;
  width: 800px;
 }
</style>

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP设计聊天室步步通
Oct 09 PHP
用PHP产生动态的影像图
Oct 09 PHP
discuz论坛 用户登录 后台程序代码
Nov 27 PHP
PHP 错误之引号中使用变量
May 04 PHP
PHP防止跨域提交表单
Nov 01 PHP
php function用法如何递归及return和echo区别
Mar 07 PHP
PHP5.3与5.5废弃与过期函数整理汇总
Jul 10 PHP
php实现mysql数据库分表分段备份
Jun 18 PHP
刷新PHP缓冲区为你的站点加速
Oct 10 PHP
深入理解PHP类的自动载入机制
Sep 16 PHP
PHP的mysqli_ssl_set()函数讲解
Jan 23 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
Sep 10 PHP
PHP Trait功能与用法实例分析
Jun 03 #PHP
PHP时间相关常用函数用法示例
Jun 03 #PHP
ThinkPHP5框架中使用JWT的方法示例
Jun 03 #PHP
Thinkphp5框架异常处理操作实例分析
Jun 03 #PHP
Thinkphp5框架中引入Markdown编辑器操作示例
Jun 03 #PHP
PHP数组基本用法与知识点总结
Jun 02 #PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 #PHP
You might like
php中的观察者模式
2010/03/24 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
jquery 插件实现多行文本框[textarea]自动高度
2015/03/04 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
Parcel.js + Vue 2.x 极速零配置打包体验教程
2017/12/24 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
JavaScript编码小技巧分享
2020/09/17 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
Python向日志输出中添加上下文信息
2017/05/24 Python
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
Flask-Mail用法实例分析
2018/07/21 Python
Python多进程fork()函数详解
2019/02/22 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
python 内置函数汇总详解
2019/09/16 Python
关于Python turtle库使用时坐标的确定方法
2020/03/19 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
信息管理专业推荐信
2013/10/29 职场文书
初二物理教学反思
2014/01/29 职场文书
一分钟演讲稿
2014/04/30 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
整改通知书格式
2015/04/22 职场文书
幼儿园综治宣传月活动总结
2015/05/07 职场文书
浅谈MySQL函数
2021/10/05 MySQL