简化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学习之简单计算器实现代码
Jun 09 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
Feb 04 PHP
PHP __autoload()方法真的影响性能吗?
Mar 30 PHP
php编写的简单页面跳转功能实现代码
Nov 27 PHP
php计算当前程序执行时间示例
Apr 24 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
php json转换成数组形式代码分享
Nov 10 PHP
php中异常处理方法小结
Jan 09 PHP
PHP实现原生态图片上传封装类方法
Nov 08 PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 PHP
laravel使用Faker数据填充的实现方法
Apr 12 PHP
PHP实现简单登录界面
Oct 23 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
解决GD中文乱码问题
2007/02/14 PHP
PHP 第二节 数据类型之字符串类型
2012/04/28 PHP
基于php 随机数的深入理解
2013/06/05 PHP
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
浅说js变量
2011/05/25 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
JavaScript一元正号运算符示例代码
2019/06/30 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
[03:04]2018年国际邀请赛典藏宝瓶&莱恩声望物品展示 片尾有彩蛋
2018/06/04 DOTA
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
python logging日志模块原理及操作解析
2019/10/12 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
关于matplotlib-legend 位置属性 loc 使用说明
2020/05/16 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
世界上最大的二手相机店:KEN
2017/05/17 全球购物
集团公司总经理岗位职责
2013/12/20 职场文书
装饰资料员岗位职责
2013/12/30 职场文书
校长创先争优承诺书
2014/08/30 职场文书
秋冬农业生产标语
2014/10/09 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
运动会闭幕式通讯稿
2015/07/18 职场文书
css实现文章分割线样式的多种方法总结
2021/04/21 HTML / CSS
用python实现监控视频人数统计
2021/05/21 Python
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python