所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数: 每页多少条记录($PageSize)?
当前是第几页($CurrentPageID)?
现在只要再给我一个结果集,我就可以显示某段特定的结果出来。
至于其他的参数,比如:上一页($PReviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。
以MySQL数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。
前10条记录:select * from table limit 0,10
第11至20条记录:select * from table limit 10,10
第21至30条记录:select * from table limit 20,10
……
这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:
select * from table limit ($CurrentPageID – 1) * $PageSize, $PageSize
拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。以下我将用具体代码加以说明。
3、简单代码
请详细阅读以下代码,自己调试运行一次,最好把它修改一次,加上自己的功能,比如搜索等等。
[php]
代码如下 | 复制代码 |
// 建立数据库连接 while ( $row = mysql_fetch_row($result) ){ |
PHP分页器制作,自动生成分面页码,JS调用函数
代码如下 | 复制代码 |
class PageView{ /**是否有上一页**/ public $pageNoList = array(); public $jsFunction ='jsFunction'; $this->totalNum = $count;//总记录数 //计算偏移 $this->hasNextPage = $this->pageNo >= $this->pageCount ?false:true; $this->pageData = $pageData; } }else if($this->pageNo > $this->pageCount - 4){ array_push($pageList,-1); array_push($pageList,$this->pageNo -2); array_push($pageList,-1); } /*** $pageString =" ";
if(!empty($pageList)){ if($this->hasNextPage){ } return $pageString; } } ?> --> |
PHP调用
代码如下 | 复制代码 |
|