程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 簡化php模板頁面中分頁代碼的解析

簡化php模板頁面中分頁代碼的解析

編輯: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" 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}這種類似的字符串用變量的值替換就可以了。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved