php 分页总结
来源:互联网 发布:c语言与或非逻辑符号 编辑:程序博客网 时间:2024/06/10 05:24
每天用php做的最多的事差不多就是从db里取数据,展示数据了,有时以网页的形式(分页)展示,有时以csv格式导出数据。今天就对分页去数据做个总结。
根Model
class RModel { /** * @param $page array 分页对象 * @param $order string order by 排序 */ public function pagination($sql, $page, $order = null, $param = array()) { $countSql = "select count(*) from ({$sql}) c"; $count = $this->createCommand($countSql)->queryCount($param); if(!empty($order)) $sql .= ' order by ' . $order; if($page) { $start = ($page['currentpage'] - 1) * $page['rownum']; $pagesize = $page['rownum']; $sql .= " limit {$start},{$pagesize} "; } $data = $this->createCommand($sql)->queryAll(true, $param); return array('list' => $data, 'total' => $count); } /** * 查询所有数据 */ public function listAll($sql, $order=null, $param=array()) { if(!empty($order)) $sql .= (' order by ' . $order); return $this->createCommand($sql)->query($param); }}具体业务model
class ConcreteModel extends RModel { protected function _getQuerySql($param) { $sql = ""; $bindParams = array(); /* * 拼接sql */ return array($sql, $bindParams); } public function listData($param, $page) { list($sql, $bindParams) = $this->_getQuerySql($param); return $this->pagination($sql, $page, 'id desec', $bindParams); } public function exportData($param) { list($sql, $bindParams) = $this->_getQuerySql($param); return $this->listAll($sql, 'id desec', $param); }}
controller
class ConcreteController { public function actionConcrete() { $request = new Request(); $model = new ConcreteModel(); if($request->getParam('actionType') == 'export') { $dataReader = $model->exportData($request); $this->exportData($dataReader); exit; } $page = Pagination::filterPageInfo($request); $data = $model->listData($request, $page); $this->render('test.html',$data); } /* * 以csv格式导出数据 */ private function exportData($dataReader) { }}在加一个分页小工具
class Pagination { public static function filterPageInfo($request, $defaultPagesize = 10) {; $pagenum = intval($request->getParam('pageno', 1)); $pagesize = intval($request->getParam('pagesize', $defaultPagesize)); $pagenum = $pagenum > 0 ? $pagenum : 1; $pagesize = $pagesize > 0 ? $pagesize : $defaultPagesize; return array('currentpage' => $pagenum, 'rownum' => $pagesize); }}
这样,我们每次要做就是就根据查询参数,拼写sql,对取出的数据做单独的格式化展示就行了
0 0
- php 分页总结
- php分页代码及总结
- php分页
- php:分页
- PHP 分页
- php分页
- PHP分页
- php分页.....
- php 分页
- php分页
- php分页
- php 分页
- php分页
- php 分页
- PHP分页
- php分页
- php分页
- PHP分页
- 基于matlab的彩色图像点阵提取小工具
- RabbitMQ消息队列(三):任务分发机制(转)
- 550 failed to change directory
- linux 登陆远程mysql (指定端口号)
- logback系列之四:输出日志到不同文件
- php 分页总结
- hibernate学习笔记(1)hibernate基本步骤
- 编码之道:取个好名字很重要
- Struts中的拦截器
- RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)(转)
- 图片预览
- Java程序员进化为架构师掌握的知识
- RabbitMQ消息队列(五):Routing 消息路由(转)
- 跨社交媒体信息演化与关联分析