| 域名空间 下载中心 社区论坛 信息公告 my小屋 |
![]() |
联系我们 设为首页 加入收藏 |
|
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿 论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图 专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版 社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务 |
| 新版上线![旧版] | |||||
注:打开慢时请稍等
再谈***分页显示***问题(主要用于模板)http://www.iyit.net 日期:2006-10-6 15:37:38 来源:iyit.net收集 点击: |
------------------------ ------------------------ 这篇文章主要是针对“使用模板的情况”写的, 但是这种方法适合于任何的场合,在任何情况下都是一种比较好的解决方案 ------------------------ ------------------------ 在使用模板的时候,会遇到这么一个问题:显示分页信息时操作麻烦,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}这种类似的字符串用变量的值替换就可以了。 ---------------------------- --------------------------------------------------------------- --------------------------------------------------------------- up ----------------- 我写的分页函数: <? function echo_page_info($url, $page, $count, $pagesize=30, $pagename="page", $url_param="", $area=10) { $area = intval($area); //每区显示几页 if($area < 4)$area = 4; $page = intval($page); //当前页 if($page < 1)$page = 1; $maxpage = ceil($count / $pagesize); //最大页数 if($maxpage == 0)$maxpage = 1; if($page > $maxpage)$page = $maxpage; $start = ($page - 1) * $pagesize; //起始点 $areapage = ceil($page / $area); //第几区 $prevpage = ($areapage - 2) * $area + 1; //上一区第一页 $nextpage = $areapage * $area + 1; //下一区第一页 $startpage = ($areapage - 1) * $area + 1; //本区起始页 if($prevpage>0) $thepage= "<a class=normal href=".$url."?".$pagename."=".$prevpage.$url_param.">[<<]</a> "; for($i=$startpage; $i<$startpage + $area; $i++) { if($i>$maxpage)break; if($i==$page)$thepage.= "<font color=blue>[$i]</font> "; else $thepage.= "<a class=normal href=".$url."?".$pagename."=".$i.$url_param.">[$i]</a> "; } if($nextpage<=$maxpage) $thepage.= "<a class=normal href=".$url."?".$pagename."=".$nextpage.$url_param.">[>>]</a>"; $result["thepage"] = $thepage; $result["total"] = $count; $result["start"] = $start; $result["page"] = $page; $result["maxpage"] = $maxpage; return $result; } //在模板调用时只需 $pageinfo = echo_page_info("xxxx.php", $page, $count, $pagesize); $xtpl->assign("page", $pageinfo); ?> xxxx.html模板页: <!-- begin: page --> 共 {page.total} 条/ {page.maxpage} 页 目前为第 {page.page} 页 分页: {page.thepage} <!-- end: page --> 编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部] 上一篇:一个简单的mysql数据库分页的程序模板(初学者进) 下一篇:字符串最后一个字符是什么? 转载请注明来源:www.iyit.net 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 相关文章 | ||||
| 设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接 |
| |||||||