thinkPHP框架可添加js事件的分页类customPage.class.php完整实例


Posted in PHP onMarch 16, 2017

本文实例讲述了thinkPHP框架可添加js事件的分页类customPage.class.php。分享给大家供大家参考,具体如下:

用于ajax动态加载数据的分页类,分页事件可以动态添加,去除了a链接中的href地址。

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
namespace Think;
class customPage{
  public $firstRow; // 起始行数
  public $listRows; // 列表每页显示行数
  public $parameter; // 分页跳转时要带的参数
  public $totalRows; // 总行数
  public $totalPages; // 分页总页面数
  public $rollPage  = 6;// 分页栏每页显示的页数
  public $lastSuffix = true; // 最后一页是否显示总页数
  private $p    = 'p'; //分页参数名
  private $url   = ''; //当前链接URL
  private $nowPage = 1;
  // 分页显示定制
  private $config = array(
    'header' => '<span class="rows">共 %TOTAL_ROW% 条记录</span>',
    'prev'  => '上一页',
    'next'  => '下一页',
    'first' => '1...',
    'last'  => '...%TOTAL_PAGE%',
    'theme' => '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%',
  );
  /**
   * 架构函数
   * @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->totalPages = ceil($this->totalRows / $this->listRows); //总页数
    if ($this->nowPage>$this->totalPages) {
      $this->nowPage = $this->totalPages ;
    }
    $this->nowPage  = $this->nowPage>0 ? $this->nowPage : 1;
    $this->firstRow  = $this->listRows * ($this->nowPage - 1);
  }
  /**
   * 定制分页链接设置
   * @param string $name 设置名称
   * @param string $value 设置值
   */
  public function setConfig($name,$value) {
    if(isset($this->config[$name])) {
      $this->config[$name] = $value;
    }
  }
  /**
   * 生成链接URL
   * @param integer $page 页码
   * @return string
   */
  private function url($page){
    return str_replace(urlencode('[PAGE]'), $page, $this->url);
  }
  /**
   * 组装分页链接
   * @return string
   */
  public function show() {
    if(0 == $this->totalRows) return '';
    /* 生成URL */
    $this->parameter[$this->p] = '[PAGE]';
    $this->url = U(ACTION_NAME, $this->parameter);
    /* 计算分页信息 */
    if(!empty($this->totalPages) && $this->nowPage > $this->totalPages) {
      $this->nowPage = $this->totalPages;
    }
    /* 计算分页临时变量 */
    $now_cool_page   = $this->rollPage/2;
    $now_cool_page_ceil = ceil($now_cool_page);
    $this->lastSuffix && $this->config['last'] = $this->totalPages;
    //上一页
    $up_row = $this->nowPage - 1;
    $up_page = $up_row > 0 ? '<a class="shang" id="'.$up_row.'"href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >上一页</a>' : '';
    //下一页
    $down_row = $this->nowPage + 1;
    $down_page = ($down_row <= $this->totalPages) ? '<a class="xia" id="'.$down_row.'" href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >下一页</a>' : '';
    //第一页
    $the_first = '';
    if($this->totalPages > $this->rollPage && ($this->nowPage - $now_cool_page) >= 1){
      $the_first = '<a class="first" id="1" href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >第一页</a>';
    }
    //最后一页
    $the_end = '';
    //if($this->totalPages > $this->rollPage && ($this->nowPage + $now_cool_page) < $this->totalPages){
    if($this->totalPages > $this->rollPage && ($this->nowPage + $now_cool_page) < $this->totalPages){
      $the_end = '<a class="end" id="'.$this->totalRows.'" href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >最后一页</a>';
    }
    for($i = 1; $i <= $this->rollPage; $i++){
        if(($this->nowPage - $now_cool_page) <= 0 ){
          $page = $i;
        }elseif(($this->nowPage + $now_cool_page - 1) >= $this->totalPages){
          $page = $this->totalPages - $this->rollPage + $i;
        }else{
          $page = $this->nowPage - $now_cool_page_ceil + $i;
        }
        if($page > 0 && $page != $this->nowPage){
          if($page <= $this->totalPages){
            $link_page .= ('<li id="'.$page.'">'.$page.'</li>');
          }else{
            break;
          }
        }else{
          if($page > 0 && $this->totalPages != 1){
            $link_page .= ('<li id="now" id="'.$page.'" class="current">'.$page.'</li>');
          }
        }
    }
    if (!empty($link_page)) $link_page = '<ul id="list">'.$link_page.'</ul>';
    //替换分页内容
    $page_str = str_replace(
      array('%HEADER%', '%NOW_PAGE%', '%UP_PAGE%', '%DOWN_PAGE%', '%FIRST%', '%LINK_PAGE%', '%END%', '%TOTAL_ROW%', '%TOTAL_PAGE%'),
      array($this->config['header'], $this->nowPage, $up_page, $down_page, $the_first, $link_page, $the_end, $this->totalRows, $this->totalPages),
      $this->config['theme']);
    $page_str = trim($page_str);
    if(!empty($page_str)) $page_str .= '<p></p><input value="" type="text"><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="go" class="go">跳转</a>';
    return $page_str;
  }
}

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

PHP 相关文章推荐
php 文件状态缓存带来的问题
Dec 14 PHP
ThinkPHP中实例Model方法的区别说明
Aug 21 PHP
php设计模式 Interpreter(解释器模式)
Jun 26 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 PHP
一个严格的PHP Session会话超时时间设置方法
Jun 10 PHP
php实现httpRequest的方法
Mar 13 PHP
php数字每三位加逗号的功能函数
Oct 22 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
May 26 PHP
简单谈谈PHP中的trait
Feb 25 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
php生成短网址/短链接原理和用法实例分析
May 29 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
Mar 16 #PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 #PHP
php生成无限栏目树
Mar 16 #PHP
CodeIgniter框架常见用法工作总结
Mar 16 #PHP
PHP常用算法和数据结构示例(必看篇)
Mar 15 #PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
Mar 15 #PHP
wordpress网站转移到本地运行测试的方法
Mar 15 #PHP
You might like
php 变量定义方法
2009/06/14 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
Smarty模板语法详解
2019/07/20 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
js中el表达式的使用和非空判断方法
2018/03/28 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
2018/08/22 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
javascript前端和后台进行数据交互方法示例
2020/08/07 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
Python+Opencv识别两张相似图片
2020/03/23 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
python文本数据处理学习笔记详解
2019/06/17 Python
Python使用贪婪算法解决问题
2019/10/22 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
Tensorflow 实现释放内存
2020/02/03 Python
Kaufmann Mercantile官网:家居装饰、配件、户外及更多
2018/09/28 全球购物
小学英语教学反思案例
2014/02/04 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
MySQL示例讲解数据库约束以及表的设计
2022/06/16 MySQL
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript