#1 jake

SpeedPHP中的分页函数非常容易使用,几乎就是在普通数据库操作findAll的基础上加入一行代码即可获取到分页数据。下面我们来介绍一下如何制作分页程序以及使用smarty显示页码。

分页Smarty留言本例子下载:guestbook-sppager[1].rar

这里我们使用的是基于Smarty的留言本,为了简单起见,我们只保留blue的蓝色模板来制造我们的分页Smarty留言本。

看看我们原来的main.php文件中的index:

$guestbook = spClass("guestbook"); 
$this->results = $guestbook->findAll();
$this->display("blue/index.html");
这里使用了findAll来获取全部的留言数据,然后我们来改成分页的程序:
$guestbook = spClass("guestbook"); 
// 这里使用了spPager,同时用spArgs接受到传入的page参数
$this->results = $guestbook->spPager($this->spArgs('page', 1), 5)->findAll();
// 这里获取分页数据并发送到smarty模板内
$this->pager = $guestbook->spPager()->getPager();
$this->display("blue/index.html");

这里我们就可以看到输出的结果和原来的不同,页面上仅有五条留言数据。好的,我们来看看是怎么做的。

$this->results = $guestbook->spPager($this->spArgs('page', 1), 5)->findAll();

spPager是分页程序,第一个参数是页码,也就是第几页,这里我们用$this->spArgs('page', 1)来获取传过来的page,后面的1是如果在page没有值的时候,默认返回1。第二个参数是分页大小,也就是每页显示几条记录,这里设置是每页显示5条记录。

spArgs的使用方法可以参考本站其他文章。

$this->pager = $guestbook->spPager()->getPager();

在使用了spPager来进行findAll后,就可以使用getPager()方法来获取分页数据。分页数据的格式是:

Array
(
    [total_count] => 13  // 数据总记录
    [page_size] => 5    // 每页多少条记录
        [total_page] => 3    // 总页数
    [first_page] => 1     // 第一页的页码
    [prev_page] => 1     // 上一页的页码
    [next_page] => 2     // 下一页的页码
    [last_page] => 3      // 最后一页的页码
    [current_page] => 1   // 当前页码
    [all_pages] => Array   // 页码数据,这里是全部的页码
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )
)

请注意分页数据的各数据的意思。

下一篇文章将介绍如何在smarty模板中使用这些分页数据。


2012-08-04 16:36:45