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

來源:互聯網
上載者:User
分頁|模板|頁面

------------------------
------------------------
這篇文章主要是針對“使用模板的情況”寫的,
但是這種方法適合於任何的場合,在任何情況下都是一種比較好的解決方案
------------------------
------------------------
在使用模板的時候,會遇到這麼一個問題:顯示分頁資訊時操作麻煩,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}這種類似的字串用變數的值替換就可以了。
----------------------------




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.