简化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脚本
Nov 26 PHP
adodb与adodb_lite之比较
Dec 31 PHP
drupal 代码实现URL重写
May 04 PHP
PHP字符串中特殊符号的过滤方法介绍
Feb 18 PHP
深入浅析yii2-gii自定义模板的方法
Apr 26 PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 PHP
常用PHP封装分页工具类
Jan 14 PHP
[原创]php正则删除html代码中class样式属性的方法
May 24 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 23 PHP
PHP反射原理与用法深入分析
Sep 28 PHP
PHP重载基础知识回顾
Sep 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/03/10 PHP
浅谈Laravel中的三种中间件的作用
2019/10/13 PHP
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
Exjs 入门篇
2010/04/07 Javascript
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
AngularJS辅助库browserTrigger用法示例
2016/11/03 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
angular分页指令操作
2017/01/09 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
JQuery.dataTables表格插件添加跳转到指定页
2017/06/09 jQuery
jQuery表单设置值的方法
2017/06/30 jQuery
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
使用webpack将ES6转化ES5的实现方法
2019/10/13 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
Python中super的用法实例
2015/05/28 Python
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
Python学习笔记之图片人脸检测识别实例教程
2019/03/06 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
python程序需要编译吗
2020/06/19 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
乐观大学生的自我评价
2014/01/10 职场文书
党风廉政承诺书
2014/03/27 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
清明节文明祭祀倡议书
2015/04/28 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL
Golang流模式之grpc的四种数据流
2022/04/13 Golang
Python如何使用循环结构和分支结构
2022/04/13 Python