博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ThinkPHP示例:ajax分页操作
阅读量:5939 次
发布时间:2019-06-19

本文共 2844 字,大约阅读时间需要 9 分钟。

hot3.png

ThinkPHP示例之ajax分页操作,演示了如何进行数据分页操作,需要使用表单示例中的数据表,或者直接创建数据表如下:
  1.     CREATE TABLE IF NOT EXISTS `think_form` (
  2.       `id` smallint(4) unsigned NOT NULL AUTO_INCREMENT,
  3.       `title` varchar(255) NOT NULL,
  4.       `content` varchar(255) NOT NULL,
  5.       `create_time` int(11) unsigned NOT NULL,
  6.       PRIMARY KEY (`id`)
  7.     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;
复制代码
修改项目配置文件中的数据库连接信息,打开示例页面后显示:
如果没有看到数据的话,请首先往该数据表里面手动添加一些数据来测试分页效果。
本分页类已被修改,用的是github上最新的分页类,通过实例化page类时直接传入html里的ajax列表容器和分页div所在的容器id,配合相应模板,即可轻松实现ajax分页。
另外,对分页调用做了
数据无关的封装
,可以
数组分页也可sql分页
,详情描述看action中的注释,为了项目中的使用方便,分页方法传入的参数用
数组
传入。
关键代码:
  1. public function index() {
  2.         import("@.ORG.Page");       //导入分页类
  3.         $Form   =   M('Form');
  4.         $list = $Form->select();
  5.         // $list = range(2,51);
  6.         $param = array(
  7.             'result'=>$list,            //分页用的数组或sql
  8.             'listvar'=>'list',            //分页循环变量
  9.             'listRows'=>10,            //每页记录数
  10.             'parameter'=>'search=key&name=thinkphp',//url分页后继续带的参数
  11.             'target'=>'content',    //ajax更新内容的容器id,不带#
  12.             'pagesId'=>'page',        //分页后页的容器id不带# target和pagesId同时定义才Ajax分页
  13.             'template'=>'Index:ajaxlist',//ajax更新模板
  14.         );
  15.         $this->page($param);
  16.         $this->display();
  17.     }
  18.     /**
  19.       +----------------------------------------------------------
  20.      * 分页函数 支持sql和数据集分页 sql请用 buildSelectSql()函数生成
  21.       +----------------------------------------------------------
  22.      * @access public
  23.       +----------------------------------------------------------
  24.      * @param array   $result 排好序的数据集或者查询的sql语句
  25.      * @param int       $totalRows  每页显示记录数 默认21
  26.      * @param string $listvar    赋给模板遍历的变量名 默认list
  27.      * @param string $parameter  分页跳转的参数
  28.      * @param string $target  分页后点链接显示的内容id名
  29.      * @param string $pagesId  分页后点链接元素外层id名
  30.      * @param string $template ajaxlist的模板名
  31.      * @param string $url ajax分页自定义的url
  32.       +----------------------------------------------------------
  33.      */
  34.     public function page($param) {
  35.         extract($param);
  36.         import("@.ORG.Page");
  37.         //总记录数
  38.         $flag = is_string($result);
  39.         $listvar = $listvar ? $listvar : 'list';
  40.         $listRows = $listRows? $listRows : 21;
  41.         if ($flag)
  42.             $totalRows = M()->table($result . ' a')->count();
  43.         else
  44.             $totalRows = ($result) ? count($result) : 1;
  45.         //创建分页对象
  46.         if ($target && $pagesId)
  47.             $p = new Page($totalRows, $listRows, $parameter, $url,$target, $pagesId);
  48.         else
  49.             $p = new Page($totalRows, $listRows, $parameter,$url);
  50.         //抽取数据
  51.         if ($flag) {
  52.             $result .= " LIMIT {$p->firstRow},{$p->listRows}";
  53.             $voList = M()->query($result);
  54.         } else {
  55.             $voList = array_slice($result, $p->firstRow, $p->listRows);
  56.         }
  57.         $pages = C('PAGE');//要ajax分页配置PAGE中必须theme带%ajax%,其他字符串替换统一在配置文件中设置,
  58.         //可以使用该方法前用C临时改变配置
  59.         foreach ($pages as $key => $value) {
  60.             $p->setConfig($key, $value); // 'theme'=>'%upPage% %linkPage% %downPage% %ajax%'; 要带 %ajax%
  61.         }
  62.         //分页显示
  63.         $page = $p->show();
  64.         //模板赋值
  65.         $this->assign($listvar, $voList);
  66.         $this->assign("page", $page);
  67.         if ($this->isAjax()) {
    //判断ajax请求
  68.             layout(false);
  69.             $template = (!$template) ? 'ajaxlist' : $template;
  70.             exit($this->fetch($template));
  71.         }
  72.         return $voList;
  73.     }
复制代码
注意page方法返回值是为了获取当前页记录的数量。
放入官方的示例目录中访问即可

转载于:https://my.oschina.net/u/200898/blog/184546

你可能感兴趣的文章
nginx禁止未绑定域名访问返回444
查看>>
c++重载后置++和--
查看>>
PostgreSQL远端访问
查看>>
WIN7如何替换开机登录画面
查看>>
AAuto如何发布EXE文件
查看>>
Linux下添加新硬盘,分区及挂载
查看>>
Cross-compilation using Clang
查看>>
BZOJ 2502: 清理雪道 [最小流]
查看>>
营销系统--手动补偿
查看>>
图标字体设计
查看>>
【转】Principles of training multi-layer neural network using backpropagation
查看>>
python字符串操作
查看>>
基础才是重中之重~Dictionary<K,V>里V的设计决定的性能
查看>>
查看Oracle中存储过程长时间被卡住的原因
查看>>
完美解决 IOS系统safari5.0 浏览器页面布局iframe滚动栏失效问题
查看>>
升级gitk后,Error in startup script: unknown color name "lime"
查看>>
并查集hdu1232
查看>>
改动Androidproject的名称(非Eclipse重命名)
查看>>
tomcat work目录的作用就是编译每个项目里的jsp文件为java文件如果项目没有jsp页面则这个项目文件夹为空...
查看>>
dedecms后台左侧菜单500错误怎么处理
查看>>