一个很好的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;