|
这篇文章主要是针对“使用模板的情况”写的,
但是这种方法适合于任何的场合,在任何情况下都是一种比较好的解决方案
在使用模板的时候,会遇到这么一个问题:显示分页信息时操作麻烦,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}这种类似的字符串用变量的值替换就可以了。 |
|