Mr.Lee 访问次数 : 241 注册日期 : 05-10-06 10:46 上次访问 : 09-10-29 21:05 |
之前一直没有做过Web开发,这段时间在看Bugfree的代码时,被bugfree的分页功能的实现给难住了,不知道是怎么实现。经过两天的阅读、分析现在总算明白了,现分享给大家。 分页导航条的功能由以下文件实现 IncludeClassPage.class.php IncludeFunctionsMain.inc.php IncludeClassPage.class.php 该文件主要被外部调用的方法有三个: 1、function Init($TableName,$RecTotal="",$RecPerPage=20,$PageID,$URL="",$Where="")//实现分页的初始化 2、function Show($SectionMax = 15,$Align="center",$JsOut = false) //返回一个分页导航条(Html代码) 3、function Limit() //这个是关键,后面说 IncludeFunctionsMain.inc.php //这个是整个程序的公用代码集中区,其中跟分页功能相关的函数是: function bugGetInfo($Fields = "Mini", $Where = "", $ShortTitleLength = 20, $Append = true) 这个函数将根据参数$Where生成SQL语句并查询,将结果以一个数组的形式返回给调用者。数组格式是这样子的: $BugList arry( [bugID]=>array(一条记录) [bugID]=>array(一条记录) [bugID]=>array(一条记录) ) 我们来看看调用上面函数的地方: //初始化 $MyPage->init("BugInfo",$_GET["RecTotal"], $BugConfig["RecordPerPage"], $_GET["PageID"], $URL, $PageWhere); ... //得到数据(以数组的形式返回) $BugList = @array_reverse(bugGetInfo($_COOKIE["CustomFields"], $_SESSION["QueryCondition"].$_SESSION["OrderCondition"].$MyPage->limit(), $BugConfig["QueryTitleLength"], true)); ... //把导航条赋值给模板文件 $TPL->assign("RecordPage", $MyPage->show()); ... //把数据赋值给模板文件 $TPL->assign("BugList",$BugList); ... 再来看看模板文件是怎么显示出来的: TemplateQueryBug.tpl ... //直接把导航条显示出来 {$RecordPage} ... //用samrty 类的foreach语句把记录显示出来 {foreach from=$BugList key=BugID item=BugInfo} ... 显示第几条到第几条数据的关键实现在在limit(),limit()函数返回于类似这样的字符串:limit 20,20。这是SQL语句的一部分。注意上面返回数据的调用: $BugList = @array_reverse(bugGetInfo($_COOKIE["CustomFields"], $_SESSION["QueryCondition"].$_SESSION["OrderCondition"].$MyPage->limit(), $BugConfig["QueryTitleLength"], true)); 这个参数:$_SESSION["QueryCondition"].$_SESSION["OrderCondition"].$MyPage->limit()是SQL语句的查询条件。就是用$MyPage->limit的控制需要返回第几条到第几条数据。 就是这样了,不知我说明白了没有? |
最后编辑, 05-10-14 09:18 回帖 |
leeyupeng 访问次数 : 14 注册日期 : 05-05-10 09:57 上次访问 : 09-10-29 21:05 |
嗯,看懂:) |
回帖 |