本站为一个PHP个人网站,提供一些代码技术文章、提交免费空间消息、一些代码、让学习更轻松-PHP-小戴

ASP分页自动长度

  • asp代码运行效果图片:

    记得以前看到过一个页码方式的分页效果,页码数多了折行继续显示一直到60多页,呵呵!有点影响美观!

    于是写了一个,可以自动适应范围的页码分页程序
    也就是说,页码格式如下
    << < 1 2 3 4 5 6 7 > >>
    << < 6 7 8 9 10 11 12 > >>

    下划线为当前页,这样就可以固定显示一个相近的页码,避免太长影响美观
    代码加了注释,主要是新手看看,呵呵 ,写这个函数,没有考虑表现结构分离问题,高手就不要追究了!

    <?php
    function page($page,$total,$phpfile,$pagesize=10,$pagelen=7){
        $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.="<span>$page/$pages</span>";//第几页,共几页
        //如果是第一页,则不显示第一页和上一页的连接
        if($page!=1){
            $pagecode.="<a href=\"{$phpfile}?page=1\">&lt;&lt;</a>";//第一页
            $pagecode.="<a href=\"{$phpfile}?page=".($page-1)."\">&lt;</a>";//上一页
        }
        //分页数大于页码个数时可以偏移
        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>'.$i.'</span>';
            } else {
                $pagecode.="<a href=\"{$phpfile}?page={$i}\">$i</a>";
            }
        }
        if($page!=$pages){
            $pagecode.="<a href=\"{$phpfile}?page=".($page+1)."\">&gt;</a>";//下一页
            $pagecode.="<a href=\"{$phpfile}?page={$pages}\">&gt;&gt;</a>";//最后一页
        }
        $pagecode.='</div>';
        return array('pagecode'=>$pagecode,'sqllimit'=>' limit '.$offset.','.$pagesize);
    }
    ?>

    函数参数:

    $page 当前$_GET获得的页码
    $total 总记录数
    $phpfile 页码连接文件名
    $pagesize 不用解释了吧 呵呵
    $pagelen 最多显示几个页码 注意(奇数),对称嘛!
    函数返回一个数组:
    pagecode 索引对应的内容是 生成的HTML 代码
    sqllimit 索引对应的是sql limit 后缀

    使用方法:

    <?php
    $phpfile = 'index.php';
    $page= isset($_GET['page'])?$_GET['page']:1;
    $db = new Mysql();
    $counts = $db->counts('select `id` from `test`');
    $sql='select `id`,`title` from `test`';
    $getpageinfo = page($page,$counts,$phpfile);
    $sql.=$getpageinfo['sqllimit'];
    $data = $db->getRows($sql);
    ?>
    <?php
    echo $getpageinfo['pagecode'];//显示分页的html代码
    ?>

    css

    <style type="text/css">
    body{font-family:Tahoma;}
    .page{padding:2px;font-weight:bolder;font-size:12px;}
    .page a{border:1px solid #ccc;padding:0 5px 0 5px;margin:2px;text-decoration:none;color:#333;}
    .page span{padding:0 5px 0 5px;margin:2px;background:#09f;color:#fff;border:1px solid #09c;}
    </style>


    页数:第[0]页||第[1]页||

  • [时间:2008-10-27 14:31:40][点击:]

  • 上下篇文章加载中...
本站关键字:宁波网络公司/宁波网站建设公司/宁波网站制作公司/宁波做网站公司