像百度上那样  [1][2][3]下一页      当点击第二页的时候  上一页[1][2][3]下一页   当点击第6页的时候 是这样上一页[2][3]..[11]下一页  就是始终显示10页  ?怎么实现这样的功能啊  求助

解决方案 »

  1.   

    下面的代码就是仿照百度的分页的/*--分页函数--*/
    function pagesfun($page,$total,$phpfile,$pagesize=9,$pagelen=9){
    $pagecode = '';//定义变量,存放分页生成的HTML
    $page = intval($page);//避免非数字页码
    $total = intval($total);//保证总记录数值类型正确
    if(!$total) return array();//总记录数为零返回空数组
    $pages = ceil($total/$pagesize);//计算总分页
    //处理页码合法性
    if($page<1) $page = 1;
    if($page>$pages) $page = $pages;
    //计算查询偏移量
    $offset = $pagesize*($page-1);
    //页码范围计算
    $init = 1;//起始页码数
    $max = $pages;//结束页码数
    $pagelen = ($pagelen%2)?$pagelen:$pagelen+1;//页码个数
    $pageoffset = ($pagelen-1)/2;//页码个数左右偏移量//生成html
    $pagecode='<div class="page">';
    $pagecode.="&nbsp;<span>$page/$pages</span>&nbsp;";//第几页,共几页
    //如果是第一页,则不显示第一页和上一页的连接
    if($page!=1){
    $pagecode.="&nbsp;<a href=\"{$phpfile}?page=1\">首页</a>&nbsp;";//第一页
    $pagecode.="&nbsp;<a href=\"{$phpfile}?page=".($page-1)."\">上一页</a>&nbsp;";//上一页
    }
    //分页数大于页码个数时可以偏移
    if($pages>$pagelen){
    //如果当前页小于等于左偏移
    if($page<=$pageoffset){
    $init=1;
    $max = $pagelen;
    }else{//如果当前页大于左偏移
    //如果当前页码右偏移超出最大分页数
    if($page+$pageoffset>=$pages+1){
    $init = $pages-$pagelen+1;
    }else{
    //左右偏移都存在时的计算
    $init = $page-$pageoffset;
    $max = $page+$pageoffset;
    }
    }
    }
    //生成html
    for($i=$init;$i<=$max;$i++){
    if($i==$page){
    $pagecode.='<span>&nbsp;<strong>'.$i.'</strong>&nbsp;</span>';
    } else {
    $pagecode.="&nbsp;<a href=\"{$phpfile}?page={$i}\">$i</a>&nbsp;";
    }
    }
    if($page!=$pages){
    $pagecode.="&nbsp;<a href=\"{$phpfile}?page=".($page+1)."\">下一页</a>&nbsp;";//下一页
    $pagecode.="&nbsp;<a href=\"{$phpfile}?page={$pages}\">尾页</a>&nbsp;";//最后一页
    }
    $pagecode.='</div>';
    return array('pagecode'=>$pagecode,'sqllimit'=>' limit '.$offset.','.$pagesize);
    }//调用
      $phpfile = 'test.php';//页面文件名
    $page= isset($_GET['page'])?$_GET['page']:1;//默认页码
    $counts = mysql_num_rows(mysql_query('select id from `art` where artpush=0'));//获取需要的数据总条数
    $sql='select * from `art` where artpush=0 order by artfirst desc,artuptop desc,arttime desc';//定义查询语句SQL
    $getpageinfo = pagesfun($page,$counts,$phpfile,15,12);//调用函数,生成分页HTML 和 SQL LIMIT 子句
    $sql.=$getpageinfo['sqllimit'];//组合完整的SQL语句
    $data = $row = array();//初始化数组
    $result = mysql_query($sql);//获取结果集
    //将数据装入$data数组
    $allarr=mysql_fetch_array($result);echo $getpageinfo['pagecode'];