PHP应用分页显示制作详细讲解(3)
<?php
// filename: test_pager.php
// 这是一段简单的示例代码,前边省略了使用pear db类建立数据库连接的代码
require "pager.class.php";
if ( isset($_get['page']) )
{
$page = (int)$_get['page'];
}
else
{
$page = 1;
}
$sql = "select * from table order by id";
$pager_option = array(
"sql" => $sql,
"pagesize" => 10,
"currentpageid" => $page
);
if ( isset($_get['numitems']) )
{
$pager_option['numitems'] = (int)$_get['numitems'];
}
$pager = @new pager($pager_option);
$data = $pager->getpagedata();
if ( $pager->isfirstpage )
{
$turnover = "首页|上一页|";
}
else
{
$turnover = "<a href='?page=1&numitems=".$pager->numitems."'>首页</a>|<a href='?page=".$pager-> previouspageid."&numitems=".$pager->numitems."'>上一页</a>|";
}
if ( $pager->islastpage )[来源 www.iocblog.net]
{
$turnover .= "下一页|尾页";
}
else
{
$turnover .= "<a href='?page=".$pager->nextpageid."&numitems=".$pager->numitems."'>下一页</a>|<a href='?page=".$pager->numpages."&numitems=".$pager->numitems."'>尾页</a>";
}
?>
需要说明的地方有两个:
这个类仅仅处理数据,并不负责处理显示,因为我觉得将数据的处理和结果的显示都放到一个类里边实在是有些勉强。显示的时候情况和要求多变,不如自己根据类给出的结果处理,更好的方法是根据这个pager类继承一个自己的子类来显示不同的分页,比如显示用户分页列表可以:
<?php
class memberpager extends pager
{
function showmemberlist()
{
global $db;
$data = $this->getpagedata();
// 显示结果的代码
// ......
}
}
/// 调用
if ( isset($_get['page']) )
{
$page = (int)$_get['page'];
}
else
{
$page = 1;
}
$sql = "select * from members order by id";
$pager_option = array(
"sql" => $sql,
"pagesize" => 10,
"currentpageid" => $page
);
if ( isset($_get['numitems']) )
{
$pager_option['numitems'] = (int)$_get['numitems'];
}
$pager = @new memberpager($pager_option);
$pager->showmemberlist();
?>
第二个需要说明的地方就是不同数据库的兼容性,在不同的数据库里截获一段结果的写法是不一样的。[来源 www.iocblog.net]
mysql: select * from table limit offset, rows
pgsql: select * from table limit m offset n
......
所以要在类里边获取结果的时候需要使用pear db类的limitquery方法。
Tag: 分页
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。