简化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 相关文章推荐
wordpress之wp-settings.php
Aug 17 PHP
PHP 变量的定义方法
Jan 26 PHP
PHP中header和session_start前不能有输出原因分析
Jan 11 PHP
ThinkPHP处理Ajax返回的方法
Nov 22 PHP
PHP实现服务器状态监控的方法
Dec 09 PHP
整理php防注入和XSS攻击通用过滤
Sep 13 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
php制作简单模版引擎
Apr 07 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
Nov 29 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
PHP小程序支付功能完整版【基于thinkPHP】
Mar 26 PHP
Laravel5.4简单实现app接口Api Token认证方法
Aug 29 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
一个SQL管理员的web接口
2006/10/09 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
js控制当再次点击按钮时的间隔时间
2014/06/03 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
JS实现的随机排序功能算法示例
2017/06/09 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
2020/03/16 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
Python加载带有注释的Json文件实例
2018/05/23 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
Python2与Python3的区别实例总结
2019/04/17 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
使用python从三个角度解决josephus问题的方法
2020/03/27 Python
Python Scrapy图片爬取原理及代码实例
2020/06/12 Python
用python对oracle进行简单性能测试
2020/12/05 Python
金融专业个人求职信
2013/09/22 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
对学校的意见和建议
2015/06/04 职场文书
2015教师节通讯稿
2015/07/20 职场文书
MySQL的Query Cache图文详解
2021/07/01 MySQL
SQLServer之常用函数总结详解
2021/08/30 SQL Server