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

原创 2004年04月27日 23:59:00

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

PHP简单漂亮的分页类

文介绍一款原生的PHP分页类,分页样式有点类似bootstrap。 index.php代码
  • haibo0668
  • haibo0668
  • 2016年09月06日 11:27
  • 6799

PHP-分页具体实现及代码

由http://www.5idev.com/p-php_page.shtml转载 尊重原创
  • qq_37711033
  • qq_37711033
  • 2017年04月16日 14:22
  • 1827

html中的a标签用js来实现页面跳转的功能(php分页时做的页面跳转)

当php在做分页时,有时候会要想做个指定跳转到某页的功能,而要跳转到某页就要涉及到js。因为必须通过js来找到用户输入的是什么,是哪一页。 所以,如果你用的是一个图片来做点击实现跳转的话,那么就可以...
  • gayayzy
  • gayayzy
  • 2012年03月02日 13:09
  • 5649

PHP模拟百度分页

以前做分页,总是“首页”、“上一页”、“下一页”、“尾页”这种分页方法,如果嫌不方便,最多加上一个“跳转至”,用多了就显得非常死板。 最近,看百度、贴吧都是用的另一种分页方法。即显示“上一页”(当最...
  • rongyongfeikai2
  • rongyongfeikai2
  • 2013年02月28日 10:37
  • 2094

【Thinkphp教程】模板中使用原生PHP代码

TMPL_DENY_PHP这个参数改为false 试试 配置文件 'TMPL_DENY_PHP' => false, // 默认模板引擎是否禁用PHP原生代码 ...
  • shueiyuan1983
  • shueiyuan1983
  • 2016年10月18日 12:18
  • 448

[Php]分页及表格样式

writer:web wu 2007/11/29 这个分页代码比较简单一些.   a:link {  color: #990000;  text-decoration: none; ...
  • cnbird2008
  • cnbird2008
  • 2013年04月07日 15:11
  • 2671

php分页代码简单实现

php分页代码简单实现
  • jsship
  • jsship
  • 2014年11月19日 21:42
  • 25501

用模板技术实现PHP代码和HMTL代码分离

 1、模板的由来 在没有模板技术之前,使用PHP开发程序,通常都是php代码和html混编在一起。比如说新闻列表,很可能就是一个newslist.php页面,结构如下: //从数据库中读取出要显示的新...
  • guwenzhong
  • guwenzhong
  • 2009年11月25日 15:31
  • 3956

php搜索条件分页;将条件导入分页

thinkphp搜索条件分页,php原生条件分页
  • fei1754294833
  • fei1754294833
  • 2017年03月31日 15:13
  • 602

PHP分页原理+代码实现

PHP分页原理 Mysql分页查询Limit关键字 sql语句 select * from table_name limit a,b; limit a,b 代表从第a条数据开始,查询总共b...
  • u013412497
  • u013412497
  • 2016年05月03日 13:47
  • 3286
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何简化php模板页面中分页代码的解析
举报原因:
原因补充:

(最多只允许输入30个字)