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

分页|模板|页面

------------------------
------------------------
这篇文章主要是针对“使用模板的情况”写的,
但是这种方法适合于任何的场合,在任何情况下都是一种比较好的解决方案
------------------------
------------------------
在使用模板的时候,会遇到这么一个问题:显示分页信息时操作麻烦,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" 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)+"'>首页</A> ";
 if(pageNow<=1)
  str += " 上一页 ";
 else
  str += " <A href='"+pageStr.replace("_page_",(pageNow-1))+"'>上一页</A> ";
 if(pageNow>=pageCount)
  str += " 下一页 ";
 else
  str += " <A href='"+pageStr.replace("_page_",(pageNow+1))+"'>下一页</A> ";
 if(pageNow>=pageCount)
  str += " 尾页 ";
 else
  str += " <A 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}这种类似的字符串用变量的值替换就可以了。
----------------------------

时间: 2024-08-03 03:23:41

如何简化php模板页面中分页代码的解析的相关文章

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

在使用模板的时候,会遇到这么一个问题:显示分页信息时操作麻烦,n多个模板都有分页块. 例如: ---共 20 条记录,当前 3/5 页 首页 上一页 下一页 尾页 GO----- 初遇到这个问题的道友,在考虑解决这个问题的时候好像都是在打php的主意,考虑怎么用php来实现,但是不管你是怎么设计都后设计成两种方案 1.用嵌套循环来实现 2.用n多个判断来搞 但是最终还是比较麻烦的,而且解析的时候是用的服务器端的资源. 不妨换个方法用javascript来代替你的php!!!!,这样即可减少php

jsp页面中的代码执行加载顺序介绍

 本篇文章主要是对jsp页面中的代码执行加载顺序进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 1. java是在服务器端运行的代码,jsp在服务器的servlet里运行,而javascript和html都是在浏览器端运行的代码.所以加载执行顺序是是java>jsp>js.   2. js在jsp中的加载顺序   页面上的js代码时html代码的一部分,所以页面加载的时候是由上而下加载.所以js加载的顺序也就是页面中<script>标签出现的顺序.<scrip

关于java代码调用页面中javascript代码

问题描述 关于java代码调用页面中javascript代码,如何调用,这方面的参考资料,各位能否推荐下?... 解决方案 解决方案二:为什么要调用页面中的那些代码?如果你把层次分的很清楚,就不存在这些问题.解决方案三:有的时候,实现一个功能,javascript更方便,java代码只要调用一下就可以,解决方案四:importnetscape.javascript.JSObject;JSObjectwindow=null;window=JSObject.getWindow(this);windo

jsp页面中的代码执行加载顺序介绍_JSP编程

1. java是在服务器端运行的代码,jsp在服务器的servlet里运行,而javascript和html都是在浏览器端运行的代码.所以加载执行顺序是是java>jsp>js. 2. js在jsp中的加载顺序 页面上的js代码时html代码的一部分,所以页面加载的时候是由上而下加载.所以js加载的顺序也就是页面中<script>标签出现的顺序.<script>标签里面的或者是引入的外部js文件的执行顺序都是其语句出现的顺序,其中js执行的过程也是页面装载的一部分. 2

ASP.net中页面中滚动条代码

针对这个问题我在网上找了好多,发现答案比较乱.其实Asp.net中page对象就有一个属性可以使页面提交或者更新数据后,返回页面原来位置,包括滚动条位置都可以保存. 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.asp教程x.cs" MaintainScrollPositionOnPostback="true" I

nginx实现html页面中加入代码配置

sub_filter功能是ngx_http_sub_module模块实现的,这个模块并不是nginx默认就会安装的,需要你在编译的时候使用–with-http_sub_module参数编译. ngx_http_sub_module的使用很简单,共有4个参数:  代码如下 复制代码 syntax:     sub_filter string replacement; default:    - context:    http, server, location 这个参数指明了用replaceme

ASP.NET 2.0 中的代码隐藏和编译

asp.net|编译 代码隐藏 虽然该代码隐藏模型在 2.0 中是不同的,但是它的语法已经进行了少量更改.实际上,该更改十分细微,如果您不仔细查看,甚至都无法注意到它Figure 1 Syntax in ASP.NET 2.0 Default.aspx<%@ Page Language="C#" AutoEventWireup="true"     CodeFile="Default.aspx.cs" Inherits="Msdn

thinkPHP中分页用法实例分析_php实例

本文实例讲述了thinkPHP中分页用法.分享给大家供大家参考,具体如下: 拿一个实例来说吧 action页面: public function show(){ import("ORG.Util.Page"); //导入分页类 $news=D("News"); $count = $news->where('`content_type`='.$id)->count(); //查询记录的总条数 $p = new Page($count, 10); $list

javascript 获取iframe里页面中元素值的方法

 本篇文章主要是对javascript获取iframe里页面中元素值的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 IE方法: document.frames['myFrame'].document.getElementById('test').value;   火狐方法: document.getElementById('myFrame').contentWindow.document.getElementById('test').value;   IE.火狐方法:   代码如