简化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代码DOS造成用光网络带宽
Mar 01 PHP
基于MySQL体系结构的分析
May 02 PHP
如何在php中正确的使用json
Aug 06 PHP
QQ互联一键登录审核不通过的解决方案
Sep 10 PHP
php中get_object_vars()方法用法实例
Feb 08 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
Dec 09 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
PHP结合Mysql数据库实现留言板功能
Mar 04 PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 PHP
PHP中类的自动加载的方法
Mar 17 PHP
PHP的静态方法与普通方法用法实例分析
Sep 26 PHP
laravel框架数据库配置及操作数据库示例
Oct 10 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入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
jquery+javascript编写国籍控件
2015/02/12 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
JavaScript中eval函数的问题
2016/01/31 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
angularjs 源码解析之scope
2016/08/22 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
从Python的源码来解析Python下的freeblock
2015/05/11 Python
Python Requests 基础入门
2016/04/07 Python
Python实现进程同步和通信的方法
2018/01/02 Python
python使用tkinter实现简单计算器
2018/01/30 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
德国EGOIST网店:销售畅销的设计师品牌
2017/04/18 全球购物
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
电子商务专员岗位职责
2013/12/11 职场文书
保险专业自荐信范文
2014/02/20 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
欢送会主持词
2015/07/01 职场文书
CSS 新特性 contain控制页面的重绘与重排问题
2021/04/30 HTML / CSS
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python