简化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 相关文章推荐
基于mysql的论坛(7)
Oct 09 PHP
关于BIG5-HKSCS的解决方法
Mar 20 PHP
PHP Stream_*系列函数
Aug 01 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
PHP通过session id 实现session共享和登录验证的代码
Jun 03 PHP
PHP数据集构建JSON格式及新数组的方法
Nov 07 PHP
『PHP』PHP截断函数mb_substr()使用介绍
Apr 22 PHP
PHP 登录记住密码实现思路
May 07 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
Mar 18 PHP
PHP下载远程文件到本地存储的方法
Mar 24 PHP
php实现博客,论坛图片防盗链的方法
Oct 15 PHP
Laravel中Facade的加载过程与原理详解
Sep 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
phpmyadmin的#1251问题
2006/11/25 PHP
使用php语句将数据库*.sql文件导入数据库
2014/05/05 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
Jquery attr(&quot;checked&quot;) 返回checked或undefined 获取选中失效
2013/10/10 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
Node.js插件安装图文教程
2016/05/06 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
2018/05/10 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
javascript实现点击小图显示大图
2020/11/29 Javascript
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
Python数据类型学习笔记
2016/01/13 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
python+django快速实现文件上传
2016/10/24 Python
python操作excel的方法
2018/08/16 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
Win10环境python3.7安装dlib模块趟过的坑
2019/08/01 Python
python pillow模块使用方法详解
2019/08/30 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
python在地图上画比例的实例详解
2020/11/13 Python
HTML5新标签兼容——&gt; 的两种方法
2018/09/12 HTML / CSS
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
在求职信中如何凸显个人优势
2013/10/30 职场文书
电脑专业个人求职信范文
2014/02/04 职场文书
村创先争优活动总结
2014/08/28 职场文书