简化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 相关文章推荐
文章推荐系统(三)
Oct 09 PHP
非常好的php目录导航文件代码
Oct 09 PHP
PHP在字符串中查找指定字符串并删除的代码
Oct 02 PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 PHP
PHP中$_FILES的使用方法及注意事项说明
Feb 14 PHP
php通过Chianz.com获取IP地址与地区的方法
Jan 14 PHP
ThinkPHP中数据操作案例分析
Sep 27 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
Jun 06 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
May 30 PHP
PHP实现非阻塞模式的方法分析
Jul 26 PHP
php使用curl模拟多线程实现批处理功能示例
Jul 25 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
Oct 15 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中使用与Perl兼容的正则表达式
2006/11/26 PHP
php面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
php加密算法之实现可逆加密算法和解密分享
2014/01/21 PHP
php判断linux下程序问题实例
2015/07/09 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
PHP实现简单日历类编写
2020/08/28 PHP
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
2017/01/13 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
python中sleep函数用法实例分析
2015/04/29 Python
python引用DLL文件的方法
2015/05/11 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
详解Python的循环结构知识点
2019/05/20 Python
使用Python和Scribus创建一个RGB立方体的方法
2019/07/17 Python
Python读写压缩文件的方法
2020/07/30 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
高中班长自我鉴定
2013/12/20 职场文书
基层工作经历证明
2014/01/13 职场文书
酒店个人求职信范文
2014/01/25 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
虎兄虎弟观后感
2015/06/12 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android