Jake大神,进来看下。。拜谢。。

#1 qiudong26

之前从没用过框架和模版,都是直接内嵌代码。这是我写的分页。分页的样式是: 首页 上一页   3 4 5 6 7 8 9 10 11 12 13  下一页 末页
我想问的是,SP框架中那个smarty分页,可不可以像我写的这个分页一样,不管在哪个页面,最多显示11个分页,并且当前页在正中间?
不然留言太多的话,就不好看了。
不晓得<{section}>有没有什么输出参数可以实现。
$PageSize=5;                                      //每页显示条数
$count=mysql_query("select ...from ....",$conn);
$nNumRows= mysql_num_rows($count);                //总条数
if($nNumRows<=0){
    echo '没有记录';
}
$MaxPage = (int)ceil($nNumRows/$PageSize);        //最大页(总页数)=总条数/每页显示条数
if(!isset($page))
$page=1;                                          //如果当前没有被赋值,则赋给1
$prevPage=$page-1;                                //上一页为当前页-1
$nextPage= $page+1;                               //下一页为当前页+1
if($prevPage<=0)
$prevPage=1;                                      //如果上一页的值<=0,则重新赋给上一页为1
if($nextPage>$MaxPage)
$nextPage=$MaxPage;                               //如果下一页值>最大页,则重新赋给下一页为最大页
$lost=($page-1)*$PageSize;                        //定义offset,从第几条开始读取。
$gotb="select ... from ...limit $lost,$PageSize";
echo <<共 $MaxPage 页 ,第 $page 页 首页 上一页 
PPP;

$middle=6;   //中间页
$pmp=$middle*2-1;     //在页面显示的最大页数
$job=$middle-1;
if($page<$middle){
    if($MaxPage<=$pmp){
        for ($p=1;$p<=$MaxPage;$p++){
             echo '',"$p",' ' ;};
        }
else{
    for ($p=1;$p<=$pmp;$p++){
        echo '',"$p",' ' ;};
    };
}
else{
    if($MaxPage>$pmp){
        if($MaxPage>=$page+$job){
           for ($p=$page-$job;$p<=$page+$job;$p++){
               echo '',"$p",' ' ;
           }
        }
        else{
           for ($p=$MaxPage-$pmp;$p<=$MaxPage;$p++){
               echo '',"$p",' ' ;
           }
        }
     }
     else{
        for ($p=$page-$job;$p<=$MaxPage;$p++){
           echo '',"$p",' ' ;
        }
     }
}
echo <<下一页 末页
DDD;
?>

2010-05-23 18:14:38

#2 azwl

可以这样写:

 

$pagenumber=xxx; //当前页数
$pagecount=xxx;   //总页数

$startPoint = 1;
$endPoint = 9;  

if ($pagenumber > 4) {
            $startPoint = $pagenumber - 4;
            $endPoint = $pagenumber + 4;
}

if ($endPoint > $pagecount) {
     $startPoint = $pagecount - 8;
     $endPoint = $pagecount;
}

if ($startPoint < 1)   $startPoint = 1;
for( $i=$startPoint; $i<=$endPoint;$++ ){
........................
if ($i==$pagenumber)
   ...................

..........................
}

2010-05-23 19:02:38

#3 jake

speedphp的spPager只是提供了分页的数据,具体的显示形式,要开发者自行来制作分页显示的代码。

2010-05-24 09:13:45