本分页类的演示样式:
http://www.88php.com/more.php?catid=1本类为PHP--SMARTY爱好者提供,不足之处请指正~~分享成果~~~提供者,阿涛~~
PHP技术群30677629
function showpage ($total, $page = 1, $perpage = 20, $url = '')
  {  /* $total  记录总数 
     $page  当前页码
  $perpage 每页一共显示记录数
  $url  url地址
  $pages  总页数/尾页数
  $prepg  上一页
  $nextpg  下一页
  $prepgten   上十页
  $nextpgten  下十页
  $pagenav    变量参数
     $pagepre = 3;   //滚动的条数  */
    global $QUERY_STRING;
    $url = ($url ? $url : '?' . preg_replace ('/(.*)(&page=[0-9]?)(.*)/i', '\\1\\3', $QUERY_STRING));
   // $url.="?a=1";
    $pages = ceil ($total / $perpage);
    $page = min ($pages, $page);
$maxpages=10;
$pagepre = 5;   //滚动的条数
    $prepg = $page - 1;
    $nextpg = ($page == $pages ? 0 : $page + 1);
$prepgten = $page - 10;
$nextpgten = ($page == $pages ? 0 : $page + 10); 
    if ($total < 1)
    {
      return false;
    }
    $pagenav = '' . '总数:<b>' . $total . '</b>    ';    //$pagenav .= ($prepg ? '' . '<a href=\'' . $url . '&pager=1\'>|<</a> <a href=\'' . $url . '&pager=' . $prepgten . '\'>上10页</a> <a href=\'' . $url . '&pager=' . $prepg . '\'>上一页</a> ' : '|< 上一页 ');
if($prepg != 1) 
   {
    $pagenav .= ($prepg ? '' . '<a href=\'' . $url . '&pager=1\'>首页</a> <a href=\'' . $url . '&pager=' . $prepg . '\'><<</a> ' : '  ');
   }
if($maxpages>=$pages)
   {
    $prepg = 1;
    $pgend = $pages;
    
   }elseif(($page-$pagepre-1+$maxpages)>$pages)
   {
    $pgstart =$pages-$maxpages + 1;
    $pgend = $pages;
    
   }else{
    $pgstart=(($page <= $pagepre)?1:($page - $pagepre));
    $pgend=(($pgstart==1)?$maxpages:($pgstart + $maxpages-1));
    }for($pg=$pgstart;$pg<=$pgend;$pg++)
    { //中间菜单
    if($pg == $page) $pagenav .="<a class=\"p_num\" href=\"". $url ."pager=$pg\"><font class=\"pager\"><font color=\"#ff0000\" >$pg</font></font></a> ";
     else $pagenav .="<a href=\"". $url ."pager=$pg\"><font class=\"pager\">$pg</font></a> ";
     }
    if($page != $pages)
    {
     $pagenav .= ($nextpg ? '' . '<a href=\'' . $url . '&pager=' . $nextpg . '\'> >></a> <a href=\'' . $url . '&pager=' . $pages . '\'>尾页</a> ' : ' >> 尾页 ');
    }
   
$pagenav .= '' . '页次:<b><font color=red>' . $page . '</font>/' . $pages . '</b>  <font class=\"pager\">转到:</font><select name=\'topage\' size=\'1\' onchange=\'window.location="' . $url . '&pager="+this.value\'>';
    for ($i = 1; $i <= $pages; ++$i)
    {
      $selected = ($i == $page ? 'selected' : '');
      $pagenav .= '' . '<option value=\'' . $i . '\' ' . $selected . '>' . $i . '</option>
';
    }
    $pagenav .= '</select>';
    return $pagenav;
  }
可能有些SMARTY初学的朋友们不知道怎么用标签调用,SMARTY的优点之一就是它十分方便的调用~~我给大家写一个很简单的检签,方便初学朋友理解主要文件有三个
more.php    //PHP代码页{调用模板代码}
more.html    //标签模板页
tag_more.html  //tag 页,用来放section循环数据的显示样式
more.html   和 tag_more.html 页是放在templates(模板文件夹)下面   
如下一个标签。
这个标签是放在模板页里面的
<{ more pager=$pager catid=$catid url=more.php titlenum=20 listnum=50 table=supe_spaceitems template=tag_more.html }>下面我简单讲讲这个标签more 为我定义一个用来写PHP代码或SQL语句的代码页,它是放在smarty类库里的。这个文件的代码写个例子
      $catid=$_GET["catid"];
      $pager=$_GET["pager"];
      $pager = ($pager ? $pager: 1);
      $offset = ($pager ? ($pager - 1) * $listnum : 0);
      $limit = ($listnum ? ' LIMIT ' . $offset . ',' . $listnum : '');
      $titlenum = ($titlenum ? $titlenum : 30);
     $showcatname = ($showcatname ? $showcatname:0);
  
      
   
           $url.='?catid='.$catid.'&';
    
    $orderkind=' order by itemid';                $sql='select * from '.$table.' where catid='.$catid.$orderkind.' desc'.$limit;         
      $result = $db->query ($sql);
       
      $more=array();
       
       
       
       while($rs = $db->fetch_array ($result))               
         {
               // $rs[subject]=wordscut($rs[subject],$titlenum);
                array_push($more,$rs);
         }
       
  
  //统计数目==============================================================        $allinfonum=0;
     $allpages=0;
     if( $table == 'supe_spaceitems' )
     {                $sql='select * from '.$table.' where catid='.$catid;
     }
         
             
      $result = $db->query ($sql);
      $allinfonum=$db->num_rows($result);
      if($allinfonum<$listnum){
       $allpages=1;
     
      }else{
      $allpages=ceil($allinfonum/$listnum);
      }      $pagers=showpage($allinfonum,$pager,$listnum,$url);
         $smarty->assign("pagers", $pagers); 
    
     $smarty->assign("more", $more); 
        $content=$smarty->fetch($template);
    
              return $content;$pager为我的分页变量,代码查获的数据要分页码 
$url 为分页的URL
$titlenum 定义标题长度
$table 定义去哪个数据表里查数据 
$listnum 定义分页显示多少条数据
有些朋友们,不知道SMARTY的下载地方,或者英文不好的朋友们,这里给你提供一个国内下载的地方。下载后直接解压出COMM文件夹,即可。
http://www.88php.com/viewthread.php?tid=272&extra=page%3D1
这个版本比较稳定,我一直在用,如果不喜欢的朋友们也可以去它的官方网站下载~~