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

 更新时间:2009年02月06日 02:27:52   作者:  
这篇文章主要是针对“使用模板的情况”写的, 但是这种方法适合于任何的场合,在任何情况下都是一种比较好的解决方案
在使用模板的时候,会遇到这么一个问题:显示分页信息时操作麻烦,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方法

    PHP文件后缀不强制为.php方法

    在本文中小编给大家整理了关于PHP文件后缀不强制为.php的操作方法和技巧,需要的朋友们学习下。
    2019-03-03
  • 详解PHP使用非对称加密算法RSA

    详解PHP使用非对称加密算法RSA

    这篇文章主要介绍了PHP使用非对称加密算法RSA,对算法感兴趣的同学,一定要看一下
    2021-04-04
  • 详细解读PHP中接口的应用

    详细解读PHP中接口的应用

    这篇文章主要介绍了PHP中接口的应用,是PHP入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • php/JS实现的生成随机密码(验证码)功能示例

    php/JS实现的生成随机密码(验证码)功能示例

    这篇文章主要介绍了php/JS实现的生成随机密码(验证码)功能,结合实例形式分析了php与javascript随机字符串生成相关的字符串遍历、随机数生成、编码转换等操作技巧,需要的朋友可以参考下
    2019-06-06
  • php调用c接口无错版介绍

    php调用c接口无错版介绍

    本篇文章主要是对php调用c接口无错版进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-03-03
  • PHP 设计模式之观察者模式介绍

    PHP 设计模式之观察者模式介绍

    观察者模式定义对象的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新!
    2012-02-02
  • 通过Email发送PHP错误的方法

    通过Email发送PHP错误的方法

    这篇文章主要介绍了通过Email发送PHP错误的方法,实例分析了php错误的读取及通过php发送Email的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 七款最流行的PHP本地服务器分享

    七款最流行的PHP本地服务器分享

    文章介绍了7个最常用的PHP本地服务器,一般来说,本地的PHP平台分为两种,一种是LAMP,即为Linux+Apache+MySql+PHP;另一种是WAMP,它是Windows+Apache+MySql+PHP,而前者一般优秀于后者。当然,本文将主要针对WAMP平台上
    2013-02-02
  • 解析smarty 截取字符串函数 truncate的用法介绍

    解析smarty 截取字符串函数 truncate的用法介绍

    本篇文章是对smarty 截取字符串函数 truncate的用法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP实现的memcache环形队列类实例

    PHP实现的memcache环形队列类实例

    这篇文章主要介绍了PHP实现的memcache环形队列类,实例分析了基于memcache实现环形队列的方法,涉及memcache缓存及队列的相关技巧,需要的朋友可以参考下
    2015-07-07

最新评论