一个很好的Zend框架的分页类
分享一个很好的Zend框架的分页类在这里具体的效果可以从站点的页面效果看出,CSS风格可以根据个人设计的意义进行更多的改变。
下面我将给出一个如何使用类的示例,如下所示:
indexcontroller.php,行动写下面的代码:
复制代码代码如下所示:
保护_curpage美元= 1; / /默认第一页
const perpagenum = 4; / /每个页面上的条目数量
公共功能的indexAction()
{
博客模式/ /美元-> _blogmodel已实例化
获取到数据行中的条目总数。
行=美元美元-> _blogmodel -> gettotalrows();
如果($ pagenum =美元-> GetRequest()-> getparam(页)){
如果第一个页面有值,覆盖初始值
美元-> _curpage = $ pagenum;
}
表中的数据/数据到前面
美元->视图->一样=美元-> _blogmodel -> getbloginfo(
自::perpagenum,(美元-> _curpage-1)*自我::perpagenum
);
/实例化分页类,并扩展到前面
美元->视图->页面=美元-> displaypagebar(合行);
}
私有函数displaypagebar($ totalrows)
{
寻呼机=新zend_pagination美元(美元totalrows,自::perpagenum);
返回的寻呼机-> getnavigation();
}
模型/ blog.php,写下面的代码:
复制代码代码如下所示:
公共功能getbloginfo($ perpagenum = null,$极限= null)
{
返回这个-> fetchall(1 = 1,'blog_id desc,perpagenum美元,美元的限制)
-> toArray();
}
公共功能gettotalrows($ = 1 = 1)
{
返回这个-> fetchall($,)->数();
}
index.phtml,写下面的代码:
复制代码代码如下所示:
标签;>
在这里,你可以看到效果,如果你想追求更好的页面效果,请根据个人喜好修改分页类别,不要在这里做详细的例子。
复制代码代码如下所示:
类zend_pagination
{
私人_navigationitemcount美元= 6; / /导航栏显示总页数
私人_pagesize美元= null; / /每页显示的项目数
私人_align =对美元; / /导航显示位置
私人_itemcount美元= null; / /项目总数
私人_pagecount美元= null; / /总页数
私人_currentpage美元= null; / /当前页
私人_front美元= null; / /前端控制器
私人_pageparaname美元=页面; / /页面的参数名称
私人_firstpagestring美元=| << ; / /导航栏中显示的字符的第一页
私人=$ _nextpagestring ; / /导航栏在网页显示字符
私人_previouspagestring美元=<<; / /网页显示字符后的导航栏
私人_lastpagestring美元=> > | ; / /在显示字符的最后一页的导航栏
私人_splitstring美元=| ; / /页面分隔符之间的数
公共功能__construct(ItemCount美元,为美元)
{
如果(!is_numeric($ ItemCount)| |(!is_numeric($ PageSize))){
抛出异常(分页错误:没有号码);
}
美元-> _itemcount = $ ItemCount;
美元-> _pagesize = $ PageSize;
美元-> _front = zend_controller_front::getInstance();
美元-> _pagecount =细胞($ ItemCount / / $ PageSize);/总页数
页=美元美元-> _front -> GetRequest()-> getparam(美元-> _pageparaname);
如果(空($页)| |(!is_numeric($页))){
是否为空,设置当前页1
美元-> _currentpage = 1;
{人}
如果($页1){
$页面= 1;
}
如果($页>美元-> _pagecount){
美元美元-> _pagecount页=;
}
美元-> _currentpage = $页;
}
}
公共功能getcurrentpage()
{
返回_currentpage美元->;
}
公共功能getnavigation()
{
导航'_align美元。;class=pagecss ;
在前几页栏中的当前页
pagecote美元=细胞(美元-> _currentpage /(($这-> _navigationitemcount - 1))- 1;
总的页/列
pagecotecount美元=细胞(美元-> _pagecount /(($这-> _navigationitemcount - 1));
起始页页
pagestart美元=美元*(pagecote美元-> _navigationitemcount - 1)+ 1;
/分页条终止页
pageend美元=美元pagestart +美元-> _navigationitemcount - 1;
如果(美元-> _pagecount << pageend美元){
pageend美元=美元-> _pagecount;
}
为导航-总:{美元-> _itemcount } {美元-> _pagecount } ;
如果($ pagecote > 0){ / /首页导航
(1)'createhref导航=美元
>美元-> _firstpagestring ;
}
如果(美元-> _currentpage!= 1)页导航
导航'createhref美元(美元-> _currentpage-1);
为导航= =>美元-> _previouspagestring ;
其他{ }
导航美元美元-> _previouspagestring;
}
而(pagestart美元美元pageend) / /数字导航区
{
如果($ pagestart = =美元-> _currentpage){
导航=pagestart美元美元美元-> _splitstring ;
{人}
美元($ pagestart)'createhref导航=
> pagestart美元
这_splitstring美元->;
}
pagestart美元+ +;
}
如果(美元-> _currentpage!=美元-> _pagecount){ / /下页导航
美元的< href =导航。
这createhref(美元->美元-> _currentpage + 1)
>美元-> _nextpagestring ;
其他{ }
美元美元-> _nextpagestring导航=;
}
如果($ pagecote << pagecotecount-1美元){ / /页面导航
美元的< href =导航。
这createhref(美元->美元-> _pagecount)
>美元-> _lastpagestring ;
}
为导航- <选择onchange = '到'窗口位置= 。
美元-> createhref()
这个选项{ }。SelectedIndex。价值。;
为($我= 1;i_pagecount美元美元;i++){
如果(美元-> getcurrentpage()= =我){
选定的$ 选定;
{人}
=选定的$ ;
}
导航=
一美元
';
}
导航=;
导航页;
返回导航;
}
公共功能getnavigationitemcount()
{
返回_navigationitemcount美元->;
}
公共功能setnavigationitemcoun($ navigationcount)
{
如果(is_numeric($ navigationcount)){
美元-> _navigationitemcount = $ navigationcount;
}
}
公共功能setfirstpagestring($ firstpagestring)
{
美元-> _firstpagestring = $ firstpagestring;
}
公共功能setpreviouspagestring($ previouspagestring)
{
美元-> _previouspagestring = $ previouspagestring;
}
公共功能setnextpagestring($ nextpagestring)
{
美元-> _nextpagestring = $ nextpagestring;
}
公共功能setlastpagestring($ lastpagestring)
{
美元-> _lastpagestring = $ lastpagestring;
}
公共功能setalign($对齐)
{
将strtolower美元($对齐);
如果($ = =中心){
美元-> _align =中心;
} elseif($ = =右对齐){
美元-> _align =权;
{人}
美元-> _align =左;
}
}
公共功能setpageparamname($ pageparamname)
{
美元-> _pageparaname = $ pageparamname;
}
公共功能getpageparamname()
{
返回_pageparaname美元->;
}
私有函数createhref($ targetpage = null)
{
$params =美元_front -> -> -> getparams GetRequest()();
$模块= $params {模块};
$控制器$params { =控制器};
$行动= $params {行动};
targeturl美元=美元-> _front -> getbaseurl()
模块;
foreach($params达关键=价值)
{
如果(键)!=控制器$键!=模块
美元关键!=动作$键!=美元-> _pageparaname){
targeturl美元= / /美元关键价值;
}
}
如果(isset($ targetpage)){ / /指定的目标页面
targeturl美元= / /美元-> _pageparaname targetpage美元;
{人}
targeturl美元= /美元-> _pageparaname / ;
}
返回的targeturl;
}
}
这里简要回顾了MySQL中的极限偏移量。
假设数据库表blog有13个数据。
语句1:从博客限制9, 4中选择*
语句2:从博客限制9中选择* 4偏移量
1和2返回语句表第十,第十一,第十二,博客,13
1在表第十开头的9个语句中,返回4行。
声明说,4 2返回4行,偏移量9代表表第十开头。
下面的语句显示分页效果:
声明3:SELECT * FROM博客极限(美元-> _curpage - 1)*自我::::perpagenum perpagenum,自;
声明4:SELECT * FROM博客极限自::perpagenum偏移(美元-> _curpage - 1)*自我::perpagenum;