不是差不多的吗
$pg=$currenntPage;
$start=$pg-4;
$end=$pg+5;
if($start<0){
  $end-=$start;
  $start=1;
}
for($i=$start;$i<=$end;$i++)
...............

解决方案 »

  1.   

    一个浅显易懂的分页类<?php
    class page{
     /*
      实例:
      $sql = "select count(*) from t_article";
      $db->query($sql);
      $db->next_record();
      $recordcount = $db->f(0);//记录总数
      
      $ofun = new page;
      $ofun->pagearg = "pagenum";//设置分页参数名,默认为page
      $ofun->ar = array("&laquo;首页", "&#8249;前页", "后页&#8250;", "末页&raquo;");//可以设置成图片HTML代码
      $trunpage = $ofun->show_page($recordcount, 20);//得到分页信息
      
      $sql = "select * from t_article order by tdate desc ".$ofun->limit;
      $db->query($sql);
      */ var $pagecount;         //总页数
     
     var $limit = "";        //分页时用到的limit参数
     
     var $pagearg = "page";  //分页参数名称
     
     var $ar = array("&laquo;首页", "&#8249;前页", "后页&#8250;", "末页&raquo;");
     /*
      * 功能:分页函数
      * 参数 $recordcount 为记录总数
      * 参数 $pagesize 为每页显示记录数,默认为20
      */
     function show_page($recordcount, $pagesize = 20){
      $this->pagecount = ceil($recordcount/$pagesize);//总页数
      //取得页码,默认为1
      if(isset($_GET[$this->pagearg])){
       if($_GET[$this->pagearg] <= 0) $page = 1;
       else $page = $_GET[$this->pagearg];
      }else {
       $page = 1;
      }
      $str = "";
      $urlar = $_GET;
      unset($urlar[$this->pagearg]);
      if($urlar){
       foreach($urlar as $key=>$val){
        if($str == "") $str = "?$key=$val";
        else $str .= "&$key=$val";
       }
       $str .= "&$this->pagearg=";
      }else{
       $str = "?$this->pagearg=";
      }
      if($page > $this->pagecount) $page = $this->pagecount;
      
      $this->limit = "limit ".($page-1)*$pagesize.",".$pagesize;
      
      $trunpage = "";
      if($page == 1){
       $trunpage .= $this->ar[0]."&nbsp;".$this->ar[1]."&nbsp;";
      }else {
       $trunpage .= '<a href="'.$str.'1">'.$this->ar[0].'</a> <a href="'.$str.($page-1).'">'.$this->ar[1].'/a> ';
      }
      $trunpage .= "&nbsp;共[$recordcount]条记录/共[$this->pagecount]页&nbsp;";
      if($page == $this->pagecount){
       $trunpage .= $this->ar[2]."&nbsp;".$this->ar[3]."&nbsp;";
      }else {
       $trunpage .= ' <a href="'.$str.($page+1).'">'.$this->ar[2].'</a> <a href="'.$str.$this->pagecount.'">'.$this->ar[3].'</a>';
      }
      $select = "<select onchange='location.href=this.options[this.selectedIndex].value'>\n";
      for($i = 1; $i <= $this->pagecount; $i++){
       $select .= "<option value=\"".$str.$i."\">$i</option>\n";
      }
      $select .= "</select>";
      return $trunpage.$select;
     }
     
    }
    ?>
      

  2.   

    这只是个函式
    function  pagedeal($pagesql, $pagesize)
    {
        global $recordcount, $pagecount, $page, $startloc;
     
    $rs          = mysql_query($pagesql);
    $recordcount = mysql_num_rows($rs); //取得记录总数

    //******计算总页数*******/ 
    if ( $recordcount % $pagesize == 0 )
        $pagecount = $recordcount / $pagesize;
    else
       $pagecount  = intval($recordcount / $pagesize) + 1;
       
    if ( empty($page)||$page<1 )//$page是当前页
        $page = 1;

    if ( $page>$pagecount )
       $page = $pagecount;
       
    $startloc = ($page - 1) * $pagesize;//确定当前页的起始记录    //-----------------当前页的前部分数字分页----------------------//
        if ($page<=5);
        $i = 0;    if ( $page>5 && $pagecount - $page < 5 && $pagecount>10 )
            $i = $pagecount - 10;    if ($page>5 && $pagecount - $page >=5)
            $i = $page - 5;    for (; $i < $page; $i++) 
            $numpage[$i] = $i  + 1;
        //--------------当前页的后半部分(包括当前页)数字分页------------//
        $j = $pagecount;    if ($page<=5 && $pagecount>10)
           $j = 10;    if ($page>5 && $pagecount - $page >=5)
           $j = $page + 5;    for (; $i<$j; $i++) 
           $numpage[$i] = $i+1;
        return $numpage;//返回数字分页}
      

  3.   

    随便瞎写,不觉得GOOGLE那个分页有什么好:(
    就一个函数,自己把参数丢进去,出来的就是页码了。<?
    function page_list($page=1,$pageurl,$max_pages,$list_size=9) //$page 当前页数 $pageurl 处理页的GET地址 $max_pages 最大页数 $list_size 左右各显示多少条
    {
        if(strstr($pageurl,"?"))
        $pageurl.="&page=";
        else
        $pageurl.="?page="; ///要是没传?过来,这页就没什么用了,page=,大概都会用这个来传页数吧     
     
        $page=$page<1?1:$page;
        $page=$page>$max_pages?$max_pages:$page; ///页数不正确后面就完蛋了
        
        $start_page=$page-$list_size;
    $start_page=$start_page<1?1:$start_page;
        $end_page=$page+$list_size;
        $end_page=$end_page>$max_pages?$max_pages:$end_page; ///这次显示的第一页码和最后一页码    for($i=$start_page;$i<=$end_page;$i++)
        {   
            if($i!=$page)
            $page_string.="<a href='$pageurl$i'>$i</a>&nbsp;";
            else
            $page_string.="[ <b>$i</b> ]&nbsp;";
        }
            $prepage=$page-1;
        $nextpage=$page+1;
        if($page>1)
        $page_string="<a href='$pageurl$prepage'>上一页</a>&nbsp;".$page_string;
        if($page<$max_pages)
        $page_string.="<a href='$pageurl$nextpage'>下一页</a>&nbsp;";    ///别忘了加上、下页
       
        echo $page_string; ///大功告成,喜欢的话RETURN也可         
    }
      

  4.   

    <?phperror_reporting(7);class buildNav {      var $limit;
          var $execute,$query;
          var $total_result = 0;
          var $offset = "offset";
          function execute($query){               global $DB,$db_prefix;
                   $GLOBALS[$this->offset] = (!isset($GLOBALS[$this->offset]) OR $GLOBALS[$this->offset]<0) ? 0 : $GLOBALS[$this->offset];
                   //$this->sql_result = $DB->query($query);               $GLOBALS[$this->offset] = ($GLOBALS[$this->offset]>$this->total_result) ? $this->total_result-10 : $GLOBALS[$this->offset];               if (empty($this->limit)) {
                       $this->limit = 20;
                   }               if (isset($this->limit)) {
                       $query .= " LIMIT " . $GLOBALS[$this->offset] . ", $this->limit";
                       $this->sql_result = $DB->query($query);
                       $this->num_pages = ceil($this->total_result/$this->limit);
                   }
                   if ($GLOBALS[$this->offset]+1 > $this->total_result) {
                       $GLOBALS[$this->offset] = $this->total_result-1;
                   }      }
          function show_num_pages($frew = "&laquo;", $rew = '上一页', $ffwd = '&raquo;', $fwd = '下一页', $separator = '') {
                   $current_pg = $GLOBALS[$this->offset]/$this->limit+1;
                   if ($current_pg > '5') {
                       $fgp = ($current_pg-5 > 0) ? $current_pg-5 : 1;
                       $egp = $current_pg+4;
                       if ($egp > $this->num_pages) {
                           $egp = $this->num_pages;
                           $fgp = ($this->num_pages-9 > 0) ? $this->num_pages-9 : 1;
                       }
                   } else {
                       $fgp = 1;
                       $egp = ($this->num_pages >= 10) ? 10 : $this->num_pages;
                   }
                   if($this->num_pages > 1) {
                      // searching for http_get_vars
                      foreach ($GLOBALS[HTTP_GET_VARS] as $_get_name => $_get_value) {
                               if ($_get_name != $this->offset) {
                                   $this->_get_vars .= "&$_get_name=$_get_value";
                               }
                      }
                      $this->listNext = $GLOBALS[$this->offset] + $this->limit;
                      $this->listPrev = $GLOBALS[$this->offset] - $this->limit;
                      $this->theClass = $objClass;
                      if (!empty($rew)) {                                                                                                                                                                                                                                              //$separator [$frew] $rew
                          $return .= ($GLOBALS[$this->offset] > 0) ? "<a href=\"$GLOBALS[PHP_SELF]?$this->offset=0$this->_get_vars\" $this->theClass title=\"第一页\">$frew</a> <a href=\"$GLOBALS[PHP_SELF]?$this->offset=$this->listPrev$this->_get_vars\" $this->theClass title=\"上一页\">$rew</a> $separator " : "";
                      }                  // showing pages
                      if ($this->show_pages_number || !isset($this->show_pages_number)) {
                          for($this->a = $fgp; $this->a <= $egp; $this->a++) {
                              $this->theNext = ($this->a-1)*$this->limit;
                              if ($this->theNext != $GLOBALS[$this->offset]) {
                                  $return .= " <a href=\"$GLOBALS[PHP_SELF]?$this->offset=$this->theNext$this->_get_vars\" $this->theClass> ";
                                  if ($this->number_type == 'alpha') {
                                      $return .= chr(64 + ($this->a));
                                  } else {
                                      $return .= $this->a;
                                  }
                                  $return .= "</a> ";
                              } else {
                                  if ($this->number_type == 'alpha') {
                                      $return .= chr(64 + ($this->a));
                                  } else {
                                      $return .= "<b>$this->a</b>";
                                  }
                                  $return .= ($this->a < $this->num_pages) ? " $separator " : "";
                              }
                          }
                          $this->theNext = $GLOBALS[$this->offset] + $this->limit;
                          if (!empty($fwd)) {
                              $offset_end = ($this->num_pages-1)*$this->limit;                                                                                                                                                                                                                                                       //$separator $fwd [$ffwd]
                              $return .= ($GLOBALS[$this->offset] + $this->limit < $this->total_result) ? "$separator <a href=\"$GLOBALS[PHP_SELF]?$this->offset=$this->listNext$this->_get_vars\" $this->theClass title=\"下一页\">$fwd</a> <a href=\"$GLOBALS[PHP_SELF]?$this->offset=$offset_end$this->_get_vars\" $this->theClass title=\"最后一页\">$ffwd</a>" : "";
                          }
                      }
                   }
                   return $return;
          }      // [Function : Showing the Information for the Offset]
          function show_info() {
                   $return .= "共: ".$this->total_result." , ";
                   $list_from = ($GLOBALS[$this->offset]+1 > $this->total_result) ? $this->total_result : $GLOBALS[$this->offset]+1;
                   $list_to = ($GLOBALS[$this->offset]+$this->limit >= $this->total_result) ? $this->total_result : $GLOBALS[$this->offset]+$this->limit;
                   //$return .= 'Showing Results from ' . $list_from . ' - ' . $list_to . '<br>';
                   $return .= "显示: ".$list_from ." - ".$list_to;
                   return $return;
          }      function pagenav() {
                   $return = "
                               <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"4\">
                                 <tr>
                                   <td>".$this->show_info()."</td>
                                   <td align=\"right\">".$this->show_num_pages()."</td>
                                 </tr>
                               </table>";               return $return;
          }
    }
    ?>