简化php模板页面中分页代码的解析

2015-01-24信息快讯网
在使用模板的时候,会遇到这么一个问题:显示分页信息时操作麻烦,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获取表单textarea数据中的换行问题
php header示例代码(推荐)
php下清空字符串中的HTML标签的代码
在PHP中PDO解决中文乱码问题的一些补充
检测png图片是否完整的php代码
php下正则来匹配dede模板标签的代码
php自动获取目录下的模板的代码
PHP 作用域解析运算符(::)
php抓取页面与代码解析 推荐
ajax实现无刷新分页(php)
php 无限级数据JSON格式及JS解析
PHP XML操作的各种方法解析(比较详细)
PHP中实现汉字转区位码应用源码实例解析
php文章内容分页并生成相应的htm静态页面代码
php Smarty模板生成html文档的方法
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Blitz templates 最快的PHP模板引擎
PHP 分页原理分析,大家可以看看
php jquery 实现新闻标签分类与无刷新分页
PHP 替换模板变量实现步骤
一周让你学会PHP 不错的学习资料
精通php的十大要点(上)
用mysql内存表来代替php session的类
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
防止MySQL注入或HTML表单滥用的PHP程序
php 动态多文件上传
php mssql 数据库分页SQL语句
PHP分页显示制作详细讲解
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
PHP ajax 分页类代码
php相当简单的分页类
网友原创的PHP模板类代码
Discuz 模板引擎的封装类代码
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
在PHP中使用模板的方法
php heredoc和phpwind的模板技术使用方法小结
Dedecms常用函数解析
深入解析php模板技术原理【一】
php基础知识:类与对象(4) 范围解析操作符(::)
用 PHP5 轻松解析 XML
©2014-2024 dbsqp.com