使用PHP和jQuery制作分页和表格
- 格式:docx
- 大小:160.77 KB
- 文档页数:11
在Thinkphp中使⽤ajax实现⽆刷新分页的⽅法在Thinkphp⽬录的Lib\ORG\Util\⽬录⾥新建AjaxPage.class.php,写⼊⼀下内容:<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]// +----------------------------------------------------------------------// | Copyright (c) 2009 All rights reserved.// +----------------------------------------------------------------------// | Licensed ( /licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st <liu21st@>// +----------------------------------------------------------------------// $Id: Page.class.php 2712 2012-02-06 10:12:49Z liu21st $class AjaxPage {// 分页栏每页显⽰的页数public $rollPage = 5;// 页数跳转时要带的参数public $parameter ;// 默认列表每页显⽰⾏数public $listRows = 20;// 起始⾏数public $firstRow ;// 分页总页⾯数protected $totalPages ;// 总⾏数protected $totalRows ;// 当前页数protected $nowPage ;// 分页的栏的总页数protected $coolPages ;// 分页显⽰定制protected $config = array('header'=>'条记录','prev'=>'上⼀页','next'=>'下⼀页','first'=>'第⼀页','last'=>'最后⼀页','theme'=>' %totalRow% %header% %nowPage%/%totalPage% 页 %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end% // 默认分页变量名protected $varPage;public function __construct($totalRows,$listRows='',$ajax_func,$parameter='') {$this->totalRows = $totalRows;$this->ajax_func = $ajax_func;$this->parameter = $parameter;$this->varPage = C('VAR_PAGE') ? C('VAR_PAGE') : 'p' ;if(!empty($listRows)) {$this->listRows = intval($listRows);}$this->totalPages = ceil($this->totalRows/$this->listRows); //总页数$this->coolPages = ceil($this->totalPages/$this->rollPage);$this->nowPage = !empty($_GET[$this->varPage])?intval($_GET[$this->varPage]):1;if(!empty($this->totalPages) && $this->nowPage>$this->totalPages) {$this->nowPage = $this->totalPages;}$this->firstRow = $this->listRows*($this->nowPage-1);}public function setConfig($name,$value) {if(isset($this->config[$name])) {$this->config[$name] = $value;}}public function show() {if(0 == $this->totalRows) return '';$p = $this->varPage;$nowCoolPage = ceil($this->nowPage/$this->rollPage);$url = $_SERVER['REQUEST_URI'].(strpos($_SERVER['REQUEST_URI'],'?')?'':"?").$this->parameter;$parse = parse_url($url);if(isset($parse['query'])) {parse_str($parse['query'],$params);unset($params[$p]);$url = $parse['path'].'?'.http_build_query($params);}//上下翻页字符串$upRow = $this->nowPage-1;$downRow = $this->nowPage+1;if ($upRow>0){$upPage="<a id='big' href='javascript:".$this->ajax_func."(".$upRow.")'>".$this->config['prev']."</a>";}else{$upPage="";}if ($downRow <= $this->totalPages){$downPage="<a id='big' href='javascript:".$this->ajax_func."(".$downRow.")'>".$this->config['next']."</a>";}else{$downPage="";}// << < > >>if($nowCoolPage == 1){$theFirst = "";$prePage = "";}else{$preRow = $this->nowPage-$this->rollPage;$prePage = "<a id='big' href='javascript:".$this->ajax_func."(".$preRow.")'>上".$this->rollPage."页</a>";$theFirst = "<a id='big' href='javascript:".$this->ajax_func."(1)' >".$this->config['first']."</a>";}if($nowCoolPage == $this->coolPages){$nextPage = "";$theEnd="";}else{$nextRow = $this->nowPage+$this->rollPage;$theEndRow = $this->totalPages;$nextPage = "<a id='big' href='javascript:".$this->ajax_func."(".$nextRow.")' >下".$this->rollPage."页</a>";$theEnd = "<a id='big' href='javascript:".$this->ajax_func."(".$theEndRow.")' >".$this->config['last']."</a>";}// 1 2 3 4 5$linkPage = "";for($i=1;$i<=$this->rollPage;$i++){$page=($nowCoolPage-1)*$this->rollPage+$i;if($page!=$this->nowPage){if($page<=$this->totalPages){$linkPage .= " <a id='big' href='javascript:".$this->ajax_func."(".$page.")'> ".$page." </a>";}else{break;}}else{if($this->totalPages != 1){$linkPage .= " <span class='current'>".$page."</span>";}}}$pageStr = str_replace(array('%header%','%nowPage%','%totalRow%','%totalPage%','%upPage%','%downPage%','%first%','%prePage%','%linkPage%','%nextPage%','%end%'),array($this->config['header'],$this->nowPage,$this->totalRows,$this->totalPages,$upPage,$downPage,$theFirst,$prePage,$linkPage,$nextPage,$theEnd),$this->config['theme']);return $pageStr;}}>控制器⾥写⼊以下内容:<?phpclass UserAction extends Action{public function user(){import("ORG.Util.AjaxPage");// 导⼊分页类注意导⼊的是⾃⼰写的AjaxPage类$credit = M('user');$count = $credit->count(); //计算记录数$limitRows = 5; // 设置每页记录数$p = new AjaxPage($count, $limitRows,"user"); //第三个参数是你需要调⽤换页的ajax函数名$limit_value = $p->firstRow . "," . $p->listRows;$data = $credit->order('id desc')->limit($limit_value)->select(); // 查询数据$page = $p->show(); // 产⽣分页信息,AJAX的连接在此处⽣成$this->assign('list',$data);$this->assign('page',$page);$this->display();}}>模板⽂件如下:<html><head><title>Ajax⽆刷新分页</title><script type="text/javascript" src="../Public/jquery-1.7.2.min.js"></script><script type="text/javascript">function user(id){ //user函数名⼀定要和action中的第三个参数⼀致上⾯有var id = id;$.get('User/user', {'p':id}, function(data){ //⽤get⽅法发送信息到UserAction中的user⽅法$("#user").replaceWith("<div id='user'>"+data+"</div>"); //user⼀定要和tpl中的⼀致});}</script></head><body><div id='user'> <!--这⾥的user和下⾯js中的test要⼀致--><volist id='list' name='list'> <!--内容输出--><{$list.id}> <{$ername}><br/></volist><{$page}> <!--分页输出--></div></body></html>以上所述是⼩编给⼤家介绍的在Thinkphp中使⽤ajax实现⽆刷新分页的⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
(实⽤篇)jQuery+PHP+MySQL实现⼆级联动下拉菜单⼆级联动下拉菜单选择应⽤在在很多地⽅,⽐如说省市下拉联动,商品⼤⼩类下拉选择联动。
本⽂将通过实例讲解使⽤jQuery+PHP+MySQL来实现⼤⼩分类⼆级下拉联动效果。
先看下效果实现的效果就是当选择⼤类时,⼩类下拉框⾥的选项内容也随着改变。
实现原理:根据⼤类的值,通过jQuery把值传给后台PHP处理,PHP通过查询MySQl数据库,得到相应的⼩类,并返回JSON数据给前端处理。
XHTML⾸先我们要建⽴两个下拉选择框,第⼀个是⼤类,第⼆个是⼩类。
⼤类的值可以是预先写好,也可以是从数据库读取。
<label>⼤类:</label><select name="bigname" id="bigname"><option value="1">前端技术</option><option value="2">程序开发</option><option value="3">数据库</option></select><label>⼩类:</label><select name="smallname" id="smallname"></select>jQuery先写⼀个函数,获取⼤类选择框的值,并通过$.getJSON⽅法传递给后台server.php,读取后台返回的JSON数据,并通过$.each⽅法遍历JSON数据,将对应的值写⼊⼀个option字符串,最后将option追加到⼩类⾥。
function getSelectVal(){$.getJSON("server.php",{bigname:$("#bigname").val()},function(json){var smallname = $("#smallname");$("option",smallname).remove(); //清空原有的选项$.each(json,function(index,array){var option = "<option value='"+array['id']+"'>"+array['title']+"</option>";smallname.append(option);});});}注意,在遍历JSON数据追加之前⼀定要先将⼩类⾥的原有的项清空。
一、电子信息技术 (2)(一)软件.................................................................................................... 错误!未定义书签。
(二)微电子技术 ...................................................................................... 错误!未定义书签。
(三)计算机及网络技术 ............................................................................ 错误!未定义书签。
(四)通信技术............................................................................................ 错误!未定义书签。
(五)广播电视技术 .................................................................................. 错误!未定义书签。
(六)新型电子元器件 ................................................................................ 错误!未定义书签。
(七)信息安全技术 .................................................................................... 错误!未定义书签。
(八)智能交通技术 .................................................................................... 错误!未定义书签。
php 分页计算公式PHP分页计算公式是指在PHP编程中,用于计算分页的公式。
分页是指将大量数据按照一定的规则分为多个页面显示,常用于网站的数据展示和浏览。
在开发网站时,经常需要使用分页功能来提高用户体验和减少数据加载的压力。
在PHP中,常用的分页计算公式如下:1. 计算总页数总页数 = 总记录数 / 每页显示的记录数2. 计算起始记录位置起始记录位置 = (当前页码 - 1) * 每页显示的记录数3. 判断是否有上一页有上一页 = 当前页码 > 14. 判断是否有下一页有下一页 = 当前页码 < 总页数通过使用这些分页计算公式,可以实现在PHP中进行数据分页的功能。
下面将详细介绍如何使用这些公式实现分页功能。
需要获取总记录数和每页显示的记录数。
总记录数可以通过查询数据库、读取文件等方式获得,每页显示的记录数一般可以根据需求进行设定。
然后,需要获取当前页码。
当前页码可以通过URL参数、表单提交等方式获得,需要注意对用户输入的合法性进行校验,避免非法输入导致错误。
接下来,可以根据总记录数和每页显示的记录数计算出总页数。
需要注意处理除不尽的情况,可以使用向上取整的方式保证总页数的准确性。
然后,可以根据当前页码和每页显示的记录数计算出起始记录位置。
起始记录位置决定了每页显示的数据的起始位置,通过在查询数据库时添加LIMIT子句,可以从指定位置开始获取数据。
根据当前页码和总页数判断是否有上一页和下一页。
如果当前页码大于1,则说明存在上一页;如果当前页码小于总页数,则说明存在下一页。
在实现分页功能时,还需要注意处理边界情况。
例如,当总记录数为0时,应该禁用上一页和下一页的链接;当只有一页时,不显示分页导航等。
PHP分页计算公式是开发网站中常用的公式,可以帮助实现数据分页的功能。
通过合理使用这些公式,可以提高用户体验和减少数据加载的压力。
在实际应用中,需要根据具体需求进行调整和优化,以达到最佳的效果。
一、电子信息技术 (2)(一)软件.................................................................................................... 错误!未定义书签。
(二)微电子技术 ...................................................................................... 错误!未定义书签。
(三)计算机及网络技术 ............................................................................ 错误!未定义书签。
(四)通信技术............................................................................................ 错误!未定义书签。
(五)广播电视技术 .................................................................................. 错误!未定义书签。
(六)新型电子元器件 ................................................................................ 错误!未定义书签。
(七)信息安全技术 .................................................................................... 错误!未定义书签。
(八)智能交通技术 .................................................................................... 错误!未定义书签。
分页显示一种非常常见的浏览和显示量数据的方法,属于web编程中最常处理的之一。
对于web编程的老手来说,编写这种代码实在和呼吸一样自然,但对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解。
分页原理:所谓分页显示,也就将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:每页多少条记录($PageSize)?当前第几页($CurrentPageID)?现在只要再给一个结果集,就可以显示某段特定的结果出来。
至于其他的参数,比如:上一页($PReviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。
以MySQL数据库为例,如果要从表内截取某段内容,sql语句可以用:select*fromtablelimitoffset,rows。
看看一组sql语句,尝试一下发现其中的规率。
前10条记录:select*fromtablelimit0,10第11至20条记录:select*fromtablelimit10,10第21至30条记录:select*fromtablelimit20,10……这一组sql语句其实就当$PageSize=10的时候取表内每一页数据的sql语句,们可以总结出这样一个模板:select*fromtablelimit($CurrentPageID-1)*$PageSize,$PageSize拿这个模板代入对应的值和上边那一组sql语句对照一下看看不那么回事。
搞定了最重要的如何获取数据的问题以后,剩下的就仅仅传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。
1。
ThinkPHP的分页功能使用介绍,超级详细的说明XCoderStudioThinkPHP官方的文档对分页功能的介绍不是特别多,只是简单聊了几句,这主要还是因为ThinkPHP是开放源码的,所以很多东西都是可以自己去查看的,而且这样我们可以从查看别人的源码中学习到一些别人写程序的技巧。
一、创建分页对象(Think\Page)在ThinkPHP 3.1及之前,分页功能可能是放在/Lib/Org/Util中的,到了ThinkPHP 3.2后,分页功能已经整合到了Library/Think中了。
而且ThinkPHP 3.2已经采用了命名机制,所以创建一个分页对象可以有两种方法:// 创建分页对象Page的方法一use Think/Page;$pageNav = new Page();// 创建分页对象Page的方法二$pageNav = new \Think\Page();分页对象Page可以接收三个参数,有两个必要的参数,其定义如下:new Page($totalRows, $listRows, $parameter = array())第一个参数是总的记录数据,及总共有多少条数据;第二个参数是每页显示的数据量;第三个参数是一个数组,Page类会检测这个数组中是否还有页码数据,如果有,则将当前页面定义到这个页码数据中,不会检测其他设置。
二、配置分页对象1、配置传递参数这个参数指的是在URL中传递的页码数据的变量名称,默认的是p=pageid,可以通过在config.php配置文件中设置一个返回变量VAR_PAGE,比如我想将这个变量名称改为page,则如下设置:‘VAR_PAGE’=> ‘page’2、配置显示模式设置分页功能的显示模式是通过setConfig()方法来完成的,可以设置的内容如下:// 分页显示定制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 %',);上面内容是直接从Page类中拷贝过来的,具体意义非常明确,其中theme就是定义页面导航的显示内容格式。
php完美结合mysql数据库记录分页显示.txt生活是过出来的,不是想出来的。
放得下的是曾经,放不下的是记忆。
无论我在哪里,我离你都只有一转身的距离。
在php网络数据库编程时,不可避免的要考虑到数据库记录结果的显示问题,为了呈现美观页面并加快页面的载入速度,就需要对数据库记录进行分页显示。
现把与php完美结合的mysql数据库记录的分页显示实例拿出来与大家共享。
mysql数据库为xinxiku,数据表为joke。
其定义sql语句如下:create table joke (id int(5) not null auto_increment,biaoti varchar(40) not null,neirong text not null,primary key (id));字段说明:id :记录号,自动递增且为主键biaoti :标题neirong :内容<html><head><title>分页显示的实现方法</title><meta http-equiv="content-type" content="text/html; charset=gb2312"><script language="javascript">/* 定义一弹出窗口,来显示具体内容*/function popwin(url){window.open(url,"","left=340, top=190, height=280, width=400, resizable=yes, scrollbars=yes, status=no, toolbar=no, menubar=no, location=no");}</script></head><body leftmargin=0 topmargin=0 rightmargin=0 ><?php//连接数据库$db=mysql_connect("localhost","root","");mysql_select_db("xinxiku",$db);//设定每一页显示的记录数$pagesize=15;//取得记录总数,计算总页数用$res=mysql_query("select count(*) from joke " ,$db);$myrow = mysql_fetch_array($res);$numrows=$myrow[0];//计算总页数$pages=intval($numrows/$pagesize);if ($numrows%$pagesize)$pages++;//判断页数设置与否,如无则定义为首页if (!isset($page))$page=1;//判断转到页数if (isset($ys))if ($ys>$pages)$page=$pages;else$page=$ys;//计算记录偏移量$offset=$pagesize*($page-1);//取记录$res=mysql_query("select id,biaoti from joke order by id desc limit $offset,$pagesize" ,$db);//循环显示记录if ($myrow = mysql_fetch_array($res)){$i=0;?><table width="101%" border="0" cellspacing="0" cellpadding="0"><tr><td width="5%" bgcolor="#e1e9fb"></td><td width="95%" bgcolor="#e1e9fb"><font color="#ff6666" size="2">内容</font></td> </tr><?phpdo {$i++;?><tr><td width="5%" bgcolor="#e6f2ff"><?php echo $i;?></td><td width="95%" bgcolor="#e6f2ff"><font size="2"><a href="javascript:popwin('jokenr.php?id=<?php echo $myrow[0];?>')" ><?php echo $myrow[1];?></a></font></td></tr><?php}while ($myrow = mysql_fetch_array($res));echo "</table>" ;}//显示总页数echo "<div align='center'>共有".$pages."页(".$page."/".$pages.")<br>";//显示分页数for ($i=1;$i<$page;$i++)echo "<a href='fy.php?page=".$i."'>第".$i ."页</a> ";echo "第".$page."页 ";for ($i=$page+1;$i<=$pages;$i++)echo "<a href='fy.php?page=".$i."'>第".$i ."页</a> ";echo "<br>";//显示转到页数echo "<form action='fy.php' method='post'> ";//计算首页、上一页、下一页、尾页的页数值$first=1;$prev=$page-1;$next=$page+1;$last=$pages;if ($page>1){echo "<a href='fy.php?page=".$first."'>首页</a> ";echo "<a href='fy.php?page=".$prev."'>上一页</a> ";}if ($page<$pages){echo "<a href='fy.php?page=".$next."'>下一页</a> ";echo "<a href='fy.php?page=".$last."'>尾页</a> ";}echo "转到<input type=text name='ys' size='2' value=".$page.">页";echo "<input type=submit name='submit' value='go'>";echo "</form>";echo "</div>";?></body></html>程序说明:1、变量说明变量$page :存放当前要显示的页数。
Thinkphp5之ajax分页实现_paginate()参数详细Thinkphp5 做数据搜索需要带关键词分页,如何将查询条件带⼊到分页中,本⽂详细介绍Thinkphp5 分页带参数⼀、基本使⽤⽅法:$list = Db::name('user')->where('status',1)->paginate(10);⼆、查看thinkphp5 paginate()函数paginate()函数可以带三个参数:$listRows 每页数量数组表⽰配置参数$simple 是否简洁模式或者总记录数如果为true,那么分页的就是只有上⼀页和下⼀页$config 配置参数具体可以⾃⼰传⼊或者在配置⽂件中配置$config 参数具体配置参数描述list_rows每页数量page当前页path url路径query url额外参数fragment url锚点var_page分页变量type分页类名三、解决⽅案:$list = Db::name('user')->where('status',1)->paginate(10,false,['type' => 'Bootstrap','var_page' => 'page',//使⽤jqery ⽆刷新分页'path'=>'javascript:AjaxPage([PAGE]);'//第⼀种⽅法,使⽤数组⽅式传⼊参数'query' => ['keyword'=>$keyword],// 第⼆种⽅法,使⽤函数助⼿传⼊参数// 'query' => request()->param(),]);使⽤时在html模板页相应位置放⼊{$list->render()}<!-- 分页 --><div class="row"><div id="result">{$list->render()}</div></div>此时页⾯⾥会⽣成⼀个页码界⾯.虽然⽅法很简单,但是存在⼀个问题,每次点击页⾯都要刷新,⽤户体验很不好,所以要在tp5原有分页类的基础上加⼀个ajax操作,直接上代码:模板jquery_ajax代码:<script>var AjaxPage = function(page){$.ajax({url:'http://xxx/public/index.php/back/topic/ajaxList',type:'post',dataType:'json',data: {apage:page},success:function(data){//console.log(data)$("#result").html(data.page);}});}</script>控制器controller\Topic.php//显⽰分类管理界⾯public function listAction(){$list = model('Topic')->paginate(10,false,['type' => 'Bootstrap','var_page' => 'page','path'=>'javascript:AjaxPage([PAGE]);',//使⽤函数助⼿传⼊参数'query' => request()->param(),]);// $res = $mem->getList();$this->assign('list',$list);return $this->fetch('list');}public function ajaxListAction(){$page = request()->param('apage');if (!empty($page)) {$rel = model('topic')->paginate(10,false,['type' => 'Bootstrap','var_page' => 'page','page' => $page,'path'=>'javascript:AjaxPage([PAGE]);',]);$page = $rel->render();}return json(['list'=>$rel,'page'=>$page]);}因为使⽤了模型⽅法,还要定义⼀个模型类model\Topic.php<?php/*** Created by PhpStorm.* User: houzhyan* mail: houzhyan@* Locator: http://www.phpclass.top* Date: 2017/10/23* Time: 11:58*/namespace app\back\model;use think\Model;class Topic extends Model {}测试结果:。
使用PHP和jQuery制作分页和表格如果您已经下载了本站提供的baseProject项目源码,后台中列表页面均可作为示例,其中文章列表页面的功能最为丰富。
如果您没有下载该源码,相关的js文件可以从/scripts/basic.js获得,示例页面为/feedback 页面。
以下是后台文章列表页面的截图。
分页和表格功能实例截图分页功能详解分页功能用于当目标数据过多时,为提高页面展示速度采用的一种手段。
本文中的分页功能借用了Zend Framework中的Zend_Paginator对象,分页适配器为Zend_Paginator_Adapter_Null。
该适配器也是最简单易用的一个。
工作原理在PHP端,分页功能的基本参数为记录总数($countRows)、每页显示的记录数($rowsPerPage)、当前页码($page 默认值为1),页码数量($items 指每次在页面上显示多少个页码,建议为单数)。
其他参数可以通过计算得到:1.页码合计($countPages)取不小于$countRows/$rowsPerPage的整数;2.起始页码和结束页码的计算方式太长不写了;3.页码列表:从起始页码到结束页码的页码组成的数组,如array(4, 5, 6, 7, 8)在HTML端,必要的参数为PHP端计算得出的数据,同时需要指定一个用于显示分页信息的html元素。
然后使用jQuery根据参数动态生成html并将其插入到指定的html元素中就行了。
PHP示例代码详解1.public function articlesAction() {2.$pageNumber= $this->getRequest()->getParam('page', 1);//获取当前页码,如果未指定则设为13.$sortBy= $this->getRequest()->getParam('sortby');//获取sortby设置4.if (empty($sortBy) || ! preg_match('/^[a-z0-9_-]+ (asc|desc)$/i', $sortBy)) {5.//如果sortBy为空或者不符合格式要求则使用以下的排序方式6.//注意:一定要进行格式检查,防止sql注入7.$sortBy= Project_Table::getFullyColumnName('article', 'id') . ' desc';8.}9.$mArticle= new Model_Article();10./* 这部分是处理where子句的,和本文关系不大,略过*/11.$whereArray = array(12.'`article`.`article_category_id`'=>$this->getRequest()->getParam(Project_Table::getFullyColumnName('article','article_category_id')),13.'`article`.`article_status_id`'=>$this->getRequest()->getParam(Project_Table::getFullyColumnName('article','article_status_id')),14.);15.$whereString = '';16.foreach ($whereArray as $key => $value) {17.if (! empty($value)) {18.if ($key == '`article`.`article_category_id`' &&$value == '-1') {19.$whereString .= " AND {$key} IS NULL";20.} else {21.$whereString .= " AND {$key} = '{$value}'";22.}23.}24.}25.if (! empty($whereString)) {26.$whereString= substr($whereString, strlen(' AND '));27.} else {28.$whereString = null;29.}30./* 以上是处理where子句的*/31.$maxGetRows= Project_Config::PAGINATOR_ITEM_COUNT_PER_PAGE;//设置每页显示的记录数量32.$articles = $mArticle->getArticles($whereString, $sortBy, $maxGetRows,($pageNumber - 1) * $maxGetRows);//从数据库中读取数据33.$countArticles= Project_Table::getLastFoundRows();//获得符合条件的数据总数34.if (empty($articles) && ! empty($countArticles)) {35.//如果没有取到任何记录,而且记录总数不为空,说明当前页码超出范围了,所以处理一下36.$articles = $mArticle->getArticles($whereString, $sortBy, $maxGetRows, null);37.$pageNumber = 1;38.}39.$pDate= Project_Datetime::getInstance();//时间处理工具,和本文无关40.foreach ($articles as $key => $article) {41.$articles[$key][Project_Table::getFullyColumnName('article', 'modified')] = $pDate->getUserTimeFromTime($article[Project_Table::getFullyColumnName('article','modified')], true);//把时间戳转换为用户的当地时间,和本文无关42.}43.$paginator= Zend_Paginator::factory($countArticles, 'Null');//调用Zend提供的分页适配器,参数1是总记录数,参数2是适配器的名字44.$paginator->setCurrentPageNumber($pageNumber);//告诉分页器当前页码45.$pages = $paginator->getPages();//得到了前面提到的所有参数,后面我会打印它,这样你会直观的看到其内容46.$this->view->articles = $articles;47.$this->view->pages = $pages;48.//以下处理是为了页面中的下拉选单提供选项数据,和本文关系不大49.if(! $this->getRequest()->isPost()) {50.$mpArticle= new Mapper_Article();51.$this->view->elementArticleStatusId =$mpArticle->getElement('article_status_id', array(Project_Mapper::OPTIONS_NULLABLE =>true, Project_Mapper::OPTIONS_DEFAULT =>''));52.$_categories = $mArticle->getAllowAppendArticleArticleCategories(null, null, null, null, true);53.$categories = array(54.$this->view->translate(Model_Article::NO_CATEGORY) =>'-1',55.);56.foreach ($_categories as $key => $row) {57.$categories[$row[Project_Table::getFullyColumnName('article_category', 'name')]] = $row[Project_Table::getFullyColumnName('article_category', 'id')];58.}59.$mpArticle= new Mapper_Article();60.$this->view->elementArticleCategories =$mpArticle->getElement('article_category_id', array(Project_Mapper::OPTIONS_IN_ARRAY =>$categories, Project_Mapper::OPTIONS_NULLABLE =>true));61.}62.}$pages中的内容我打印了一下,这样更直观。
如下。
63.stdClass Object64.(65.[pageCount] => 366.[itemCountPerPage] => 1067.[first] => 168.[current] => 269.[last] => 370.[previous] => 171.[next] => 372.[pagesInRange] => Array73.(74.[1] => 175.[2] => 276.[3] => 377.)78.79.[firstPageInRange] => 180.[lastPageInRange] => 381.[currentItemCount] => 1082.[totalItemCount] => 2183.[firstItemNumber] => 1184.[lastItemNumber] => 2085.)Zend Framework的开发人员确实很认真,返回的参数非常充分,不需要任何的补充。