简化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+mysql一个名片库程序
Oct 09 PHP
php将fileterms函数返回的结果变成可读的形式
Apr 21 PHP
fgetcvs在linux的问题
Jan 15 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
php中Session的生成机制、回收机制和存储机制探究
Aug 19 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
Sep 24 PHP
php静态文件返回304技巧分享
Jan 06 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
Mar 19 PHP
Yii中的cookie的发送和读取
Jul 27 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
Aug 17 PHP
PHP实现生成带背景的图形验证码功能
Oct 03 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 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文件上传实例详解!!!
2007/01/02 PHP
用php实现像JSP,ASP里Application那样的全局变量
2007/01/12 PHP
php连接数据库代码应用分析
2011/05/29 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
window.open()弹出居中的窗口
2007/02/01 Javascript
js注意img图片的onerror事件的分析
2011/01/01 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
js函数调用的方式
2014/05/06 Javascript
jQuery实现ichat在线客服插件
2014/12/29 Javascript
jquery中$each()方法的使用指南
2015/04/30 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
Django中的“惰性翻译”方法的相关使用
2015/07/27 Python
python生成验证码图片代码分享
2016/01/28 Python
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
python 对dataframe下面的值进行大规模赋值方法
2018/06/09 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
Python+OpenCV实现图像的全景拼接
2020/03/05 Python
Matplotlib使用Cursor实现UI定位的示例代码
2020/03/12 Python
Python实现动态循环输出文字功能
2020/05/07 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
CSS3实现全景图特效示例代码
2018/03/26 HTML / CSS
顺丰快递Java软件工程师面试题
2015/07/31 面试题
新学期红领巾广播稿
2014/01/14 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
python数字转对应中文的方法总结
2021/08/02 Python