简化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 相关文章推荐
使用数据库保存session的方法
Oct 09 PHP
c#中的实现php中的preg_replace
Dec 21 PHP
php 需要掌握的东西 不做浮躁的人
Dec 28 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
Feb 22 PHP
PHP 中关于ord($str)&amp;gt;0x80的详细说明
Sep 23 PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 PHP
浅谈php+phpStorm+xdebug配置方法
Sep 17 PHP
由php中字符offset特征造成的绕过漏洞详解
Jul 07 PHP
php基于session锁防止阻塞请求的方法分析
Aug 07 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
用PHP的反射实现委托模式的讲解
Mar 22 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新手上路(三)
2006/10/09 PHP
PHP 分页原理分析,大家可以看看
2009/12/21 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
JS动态日期时间的获取方法
2015/09/28 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
Bootstrap 手风琴菜单的实现代码
2017/01/20 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
Nodejs之TCP服务端与客户端聊天程序详解
2017/07/07 NodeJs
angular2中Http请求原理与用法详解
2018/01/11 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
2018/08/22 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
2019/03/07 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
python实现bucket排序算法实例分析
2015/05/04 Python
Python脚本实时处理log文件的方法
2016/11/21 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
详解pandas获取Dataframe元素值的几种方法
2020/06/14 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
用友笔试题目
2016/10/25 面试题
保密工作目标责任书
2014/07/28 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
学困生帮扶工作总结
2015/08/13 职场文书
话题作文之学会尊重
2019/12/16 职场文书
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏