if($from < 1){
$to = $curpage + 1 - $from; //重点这句
$from = 1;
if(($to - $from) < $page && ($to - $from) < $totalpage){
$to = $page;
}
}elseif($to > $totalpage){
$from = $curpage - $totalpage + $to;//重点这句

解决方案 »

  1.   

    $from = $curpage - $offset;  //新的开始页码
    $to = $curpage + $page - $offset - 1; //新的结束页码
    if($from < 1) {  //如果新的开始页码小于1 ,则新的开始页码为1,结束页码后移,保持从开始到结束有一个固定页码数
      $to = $curpage + 1 - $from;
      $from = 1;     
      if(($to - $from) < $page && ($to - $from) < $pages) {
         to = $page;  // 如果从开始到结束的页码数小于一定量,重新给结束页赋值
      }
    } elseif($to > $pages) { //如果结束页大于最大页码,结束为最大页码,开始页码前移
      $from = $curpage - $pages + $to;
      $to = $pages;
      if(($to - $from) < $page && ($to - $from) < $pages) {
         $from = $pages - $page + 1; 如果从开始到结束的页码数小于一定量,重新给开始页赋值
    }
      

  2.   

    目的只有一个,通过前移或后移开始页码和结束页码,
    保持从开始到结束有一个固定页码数($page)
    不过好像最后一句 $from = $pages - $page + 1; 没有判断$from 是否出现负值
      

  3.   

    回水草:if($from < 1){
      $to = $curpage + 1 - $from; //重点这句
      //这里的$from=$curpage - $offset
      //$to为什么要等于$curpage + 1 - $from 呢?
      //这里的$to的值永远是$offset+1
      //为什么不直接给$to一个常量或什么呢?
    }
    if($to > $pages){
      $from = $curpage - $totalpage + $to;//重点这句
      //这句话就彻底没弄明白。。当前页 - 总页数 +  $to
      //这里的$to= $curpage(当前页) + $page - $offset - 1
    }
      

  4.   

    这么写会明白些
    $from =$curpage -($pages-$to);
      

  5.   

    分页的原理你理解的话,我想你一定能看得懂。
    首先要统计满足条件的记录总数,
    其次确定每页显示的记录数
    第二计算分几页,
    最后怎么显示,就看自己的需要了。在MYSQL有LIMIT非常容易控制。
      

  6.   

    $from = $curpage - $offset;  
    $to = $curpage + $page - $offset - 1; 
    if($from < 1) {  
      $to = $to + 1 - $from;
      $from = 1;     
    } elseif($to > $pages) { 
      $from = $from -($to - $pages) ;
      $to = $pages;
    }
    这样写或许会更好些
      

  7.   

    ASP里为ADO之Recordset写的函数'功能:recordset页码调整通用函数
    '参数:rs 记录集
    '      pagesize 页尺寸
    '    page指向的 页号
    '    page Count返回的页总数
    function tPage(rs, pagesize, page, pageCount)
    if Not IsNumeric( page ) then
    page = 1
    else
    page = CInt( page )
    end if if pagesize="" then pagesize=20 rs.pagesize = pagesize  '页尺寸的有效性由用户自己负责 if page < 1 then page = 1
    if page > rs.PageCount then page = rs.PageCount
    on error resume next
    rs.AbsolutePage = page
    on error goto 0 pageCount = rs.pageCount '输出pageCount
    end function