简化php模板页面中分页代码的解析


Posted in PHP onFebruary 06, 2009

在使用模板的时候,会遇到这么一个问题:显示分页信息时操作麻烦,n多个模板都有分页块。
例如:
---共 20 条记录,当前 3/5 页 首页 上一页 下一页 尾页 GO-----
初遇到这个问题的道友,在考虑解决这个问题的时候好像都是在打php的主意,考虑怎么用php来实现,但是不管你是怎么设计都后设计成两种方案
1、用嵌套循环来实现
2、用n多个判断来搞
但是最终还是比较麻烦的,而且解析的时候是用的服务器端的资源。
不妨换个方法用javascript来代替你的php!!!!,这样即可减少php脚本的代码量,还可以把解析分页的工作交给客户端自己来作。不过javascript调试起来可能会比较麻烦。
最重要的是可以简化分页显示时,解析模板遇到的痛苦。
下面用一个支持pear的itx模板工具解析的模板.
其中<!-- BEGIN page -->和<!-- END page -->表示一个块,{recordcount}这种类似的字符串是变量。
----------------list.tpl---------------------

//其它的html代码 
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%"> 
<TR> 
<TD align="right" nowrap> 
<script src="images/page.js" src="images/page.js" language="javascript"></script> 
<script language="javascript"><!-- 
BEGIN page --> 
recordCount = {recordcount}; 
show = {showinonepage} 
pageCount = {pagecount}; 
pageNow = {page}; 
pageStr = "?page=_page_"; 
document.write(showListPage0(recordCount, show, pageCount, pageNow, pageStr)); 
<!-- END page 
// --></script> 
</TD> 
</TR> 
</TABLE> 
//其它的html代码 
--------------------page.js------------ 
//---------------共 20 条记录,当前 3/5 页 首页 上一页 下一页 尾页 GO------------------- 
//recordCount = 20; 
//show = 20 
//pageCount = 5; 
//pageNow = 3; 
//pageStr = "?page=_page_"; 
//document.write(showListPage(recordCount, show, pageCount, pageNow, pageStr)); 
function showListPage0(recordCount, show, pageCount, pageNow, pageStr){ 
if(pageCount<1) pageCount =0; 
if(pageNow<1) pageNow = 0; 
str = '<form name="frmpage">共 <B>'+recordCount+'</B> 条记录,当前 <B>'+pageNow+'/'+pageCount+'</B> 页'; 
if(pageNow<=1) 
str += " 首页 "; 
else 
str += " <A href=""+pageStr.replace("_page_",1)+"" href=""+pageStr.replace("_page_",1)+"">首页</A> "; 
if(pageNow<=1) 
str += " 上一页 "; 
else 
str += " <A href=""+pageStr.replace("_page_",(pageNow-1))+"" href=""+pageStr.replace("_page_",(pageNow-1))+"">上一页</A> "; 
if(pageNow>=pageCount) 
str += " 下一页 "; 
else 
str += " <A href=""+pageStr.replace("_page_",(pageNow+1))+"" href=""+pageStr.replace("_page_",(pageNow+1))+"">下一页</A> "; 
if(pageNow>=pageCount) 
str += " 尾页 "; 
else 
str += " <A href=""+pageStr.replace("_page_",pageCount)+"" href=""+pageStr.replace("_page_",pageCount)+"">尾页</A> "; 
str += "跳到<input type=\"text\" name=\"txtpage\" size=\"3\">页"; 
str += "<input type=\"button\" value=\"GO\" onclick=\"pagego0(document.frmpage.txtpage.value,"+pageNow+","+pageCount+",'"+pageStr+"')\"></form>"; 
return str; 
} 
function pagego0(pageGo,pageNow,pageCount,pageStr){ 
if(pageGo>=1 && pageGo<=pageCount && pageNow!=pageGo) 
window.location = pageStr.replace("_page_", pageGo); 
}

另外这种方法即使不用模板,也可以用,也一样是一种好的分页解决方案,只要将{recordcount}这种类似的字符串用变量的值替换就可以了。
PHP 相关文章推荐
PHP 时间转换Unix时间戳代码
Jan 22 PHP
php中session_unset与session_destroy的区别分析
Jun 16 PHP
网站防止被刷票的一些思路与方法
Jan 08 PHP
laravel 5 实现模板主题功能(续)
Mar 02 PHP
浅谈php的优缺点
Jul 14 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
Sep 02 PHP
php微信开发之自定义菜单完整流程
Oct 08 PHP
php一个文件搞定微信jssdk配置
Dec 12 PHP
PHP实现的数独求解问题示例
Apr 18 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
php fread函数使用方法总结
May 28 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 PHP
精通php的十大要点(上)
Feb 04 #PHP
用mysql内存表来代替php session的类
Feb 01 #PHP
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
Jan 30 #PHP
防止MySQL注入或HTML表单滥用的PHP程序
Jan 21 #PHP
php 动态多文件上传
Jan 18 #PHP
PHP $_SERVER详解
Jan 16 #PHP
php 删除数组元素
Jan 16 #PHP
You might like
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
js 居中漂浮广告
2010/03/21 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
常用一些Javascript判断函数
2012/08/14 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
javascript实现获取浏览器版本、操作系统类型
2015/01/29 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
Vue中正确使用jQuery的方法
2017/10/30 jQuery
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
python的else子句使用指南
2016/02/27 Python
Python深入06——python的内存管理详解
2016/12/07 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
Python如何使用字符打印照片
2020/01/03 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
Python Http请求json解析库用法解析
2020/11/28 Python
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
c语言常见笔试题总结
2016/09/05 面试题
某公司部分笔试题
2013/11/05 面试题
企业治理工作自我评价
2013/09/26 职场文书
大学毕业登记表自我鉴定
2013/10/09 职场文书
计算机科学与技术应届生求职信
2013/11/07 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
运动会稿件50字
2014/02/17 职场文书
企业法人授权委托书
2014/04/03 职场文书
2015年乡镇民政工作总结
2015/05/13 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python
sql注入教程之类型以及提交注入
2021/08/02 MySQL