简化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环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
Nov 17 PHP
ThinkPHP实现跨模块调用操作方法概述
Jun 20 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
php常见的魔术方法详解
Dec 25 PHP
Symfony2联合查询实现方法
Mar 18 PHP
PHP strcmp()和strcasecmp()的区别实例
Nov 05 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
Feb 07 PHP
php删除数组指定元素实现代码
May 03 PHP
可兼容php5与php7的cURL文件上传功能实例分析
May 11 PHP
YII分模块加载路由的实现方法
Oct 01 PHP
PHP registerXPathNamespace()函数讲解
Feb 03 PHP
使用PHPWord生成word文档的方法详解
Jun 06 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
php5.3 废弃函数小结
2010/05/16 PHP
php通用防注入程序 推荐
2011/02/26 PHP
php 面向对象的一个例子
2011/04/12 PHP
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
神盾加密解密教程(三)PHP 神盾解密工具
2014/06/08 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
jQuery 源码分析笔记(4) Ready函数
2011/06/02 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
jquery动态增加删除表格行的小例子
2013/11/14 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
JavaScript判断浏览器类型的方法
2015/02/10 Javascript
nodejs导出excel的方法
2015/06/30 NodeJs
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
vue基础之模板和过滤器用法实例分析
2019/03/12 Javascript
JavaScript 处理树数据结构的方法示例
2019/06/16 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
Python简单日志处理类分享
2015/02/14 Python
Python的时间模块datetime详解
2017/04/17 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
python 重定向获取真实url的方法
2018/05/11 Python
python 以16进制打印输出的方法
2018/07/09 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
Django继承自带user表并重写的例子
2019/11/18 Python
python对Excel按条件进行内容补充(推荐)
2019/11/24 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
C#的几个面试问题
2016/05/22 面试题
和平主题的演讲稿
2014/01/12 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis