All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
如何对PHP程序中的常见漏洞进行攻击_php资料_编程技术
Delphi在状态栏中显示检查框
c#中GDI+图形图像:GDI+中的椭圆和弧使用方法
Ajax 及其入门基础(2)_[AJAX教程]
asp.net,实现购物车详细代码_[Asp.Net教程]
datareader显示很快的分页程序实例_[Asp.Net教程]
JS实现图片无缝滚动的完美解决_JavaScript技术_编程技术
C#中添加XML节点实例
XML学习笔记(五)Schema语法之简单类型_[XML教程]
入门:刚开始学.Net时写的分页类_.net资料_编程技术
Reading number is top 10 pictures
A man's favorite things1
性感丰满身材火爆de美女2
BingBingFan apple dew point photo gallery5
这年头,找个靠谱的妹子太难了
9.3阅兵全景图3-外国方阵梯队和坦克方阵梯队
yy365网站上的美女3
The real super beauty10
Beautiful Japanese beauty(漂亮的日本美女)
29 the belle stars after bath figure3
南昌铁路局宜春车务段攸县车站铁路职工福利房被开发商侵占
Download software ranking
Ashlynn Video2
Tram sex maniac 2 (H) rar bag10
Tram sex maniac 2 (H) rar bag4
Visual C++界面编程技术
SQL2000 For 4IN1
圣殿祭司的ASP.NET.2.0.开发详解-使用C#
DreamWeaver8
双旗镇刀客A
网页特效实例大全
matrix2
归海一刀 published in(发表于) 2014/2/10 6:48:25 Edit(编辑)
PHP学习:Smarty的分页实现_[PHP教程]

PHP学习:Smarty的分页实现_[PHP教程]

PHP学习:Smarty的分页实现_[PHP教程]

Smarty中的分页有很多方法。
  1。使用Smarty的分页插件,如Pager,pagnition,sliding_page等,不过感觉都不是太好,几乎都有一些Bug。
  有兴趣试用和自己去改进的朋友可以看看:
http://smarty.php.net/contribs/plugins/view.php/function.pager.php
http://www.phpinsider.com/smarty-forum/viewtopic.php?t=2327
http://www.phpinsider.com/smarty-forum/viewtopic.php?t=1604

  2。使用分页类库,呵呵,这个网上就太多了,一大把,不过我还没有发现写得很好的,特别是容易扩展的。
  在搜索的时候还看到一个号称分页类终结者的,哈哈,有点好笑。分页类中把SQL都包含进去了,这个是绝对不能容忍的,可以说作者对OO的认识还比较浅。

  不过分页类库不一定适合Smarty,特别是当记录集数据是二维数组时,我不想放弃Smarty方便的Section。这是我没有用PEAR::Pager的原因,否则还要先对数组进行处理,也很麻烦。

  3。自己写啦。。我暂时没有选择写成类库,不过改写很容易,下面主要讲讲思路。

  其实Smarty的分页非常简单,首先我们可以在模板中这样实现:
{pager_Links}
{section name="list" loop=productID start=0 max=pager_Total step=1}
{if (smarty.section.list.index >= pager_StartNum )&& (smarty.section.list.index <= pager_EndNum )}
产品名称:{productName[list]}
产品类别:{catalogName[list]}
{/if}
{/section}

以上就可以将一个记录集(二维数组)轻松地打印出来,而且限定每页的显示范围。
{pager_Links} 分页标签(就是上一页,下一页等)
max=pager_Total 记录总数
smarty.section.list.index >= pager_StartNum )&& (smarty.section.list.index <= pager_EndNum )
这一行是用来限定记录的显示范围的,如果记录的索引落在这个范围之内就显示出来,否则就不显示。

以上可以看出,在PHP文件中,我们只需要传递4个变量给Smarty对象:
1.记录总数
2.每页记录起始数
3.每页记录结束数
4.分页标签

以下代码代参考:
标签可以自己去写了,可以扩充成更强大的。现在我没有时间,不然会写一个
smartyArr = smarty->get_template_vars();

//记录总数,每页显示记录条数,总页数
pager_Total = count(smartyArr['productID']);
pager_Size = 10;
pager_Number = ceil(pager_Total/pager_Size);
pager_URL = "index.php?action=View";

//当前页的页数,从REQUEST获得
if(isset(_GET['pager_PageID'])&& !empty(_GET['pager_PageID'])){
pager_PageID = intval(_GET['pager_PageID']);
}else{
//第一次访问
pager_PageID = 1;
}

//每页的起,始记录数
if (pager_PageID == 1 ) {
pager_StartNum = 0;
} else {
pager_StartNum = (pager_PageID -1) * pager_Size;
}

pager_EndNum = pager_StartNum + pager_Size;

if (pager_PageID == 1 && pager_Number>1) {
//第一页
pager_Links = "上一页 | 下一页";
} elseif(pager_PageID == pager_Number && pager_Number>1) {
//最后一页
pager_Links = "上一页 | 下一页";
} elseif (pager_PageID > 1 && pager_PageID <= pager_Number) {
//中间
pager_Links = "上一页 | 下一页";
} else {
pager_Links = "上一页 | 下一页";
}

smarty->assign('pager_Total',pager_Total);
smarty->assign('pager_StartNum',pager_StartNum);
smarty->assign('pager_EndNum',pager_EndNum);
smarty->assign('pager_Links',pager_Links);

return smarty->fetch ("list.tpl");
?>





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.