zoukankan      html  css  js  c++  java
  • PHP通用分页

    php通用分页,先看下样式

    代码如下:

    <style>
    body {
        font-size:12px;font-family:verdana;100%;
    }
    div.page{
        text-align:center;
    }
    
    div.content{
        height:300px;
    }
    
    div.page a{
        border:#aaaadd 1px solid;text-decoration:none;padding:2px 5px 2px 5px;margin:2px;
    }
    
    div.page span.current{
        border:#000099 1px solid;background-color:#000099;padding:4px 6px 4px 6px;margin:2px;color:#fff;font-weight:bold;
    }
    
    div.page span.disable{
        border:#eee 1px solid;padding:2px 5px 2px 5px;margin:2px;color:#ddd;
    }
    
    div.page form{
        display:inline;
    }
    </style>
    <?php
    header("Content-type:text/html;charset=utf-8");
    //传入页码
    $page = isset($_GET['p']) ? $_GET['p'] : 1;
    
    $page = $page > 0 ? intval($page) : 1;
    
    $conn = mysql_connect("127.0.0.1","root","") or die('连接数据库失败');
    mysql_select_db("demo",$conn);
    mysql_query("SET NAMES UTF8");
    
    $pageSize = 10;//每页显示的数据
    $showPage = 5;//显示页码
    $sql = "select * from demo limit ".($page-1)*$pageSize.",".$pageSize;
    $result = mysql_query($sql,$conn);
    
    echo '<div class="content"><table border=1 cellspacing=0 width=40% align="center">';
    echo '<tr><td>ID</td><td>NAME</td></tr>';
    while($row = mysql_fetch_assoc($result)){
        echo '<tr>';
        echo '<td>'.$row['id'].'</td>';
        echo '<td>'.$row['name'].'</td>';
        echo '</tr>';
    }
    echo '</table></div>';
    mysql_free_result($result);
    $total_sql = "select count(*) from demo";
    $total_result = mysql_fetch_array(mysql_query($total_sql));
    $total = $total_result[0];
    
    //计算总页数
    $total_page = ceil($total/$pageSize);
    mysql_close($conn);
    /*分页条*/
    $page_banner = '<div class="page">';
    
    //偏移量
    $pageOffset = ($showPage-1)/2;
    
    if ($page > 1) {
        $page_banner .= '<a href="'.$_SERVER['PHP_SELF'].'?p=1">首页</a>&nbsp;';
        $page_banner .= '<a href="'.$_SERVER['PHP_SELF'].'?p='.($page-1).'"><<上一页</a>&nbsp;';
    } else {
        $page_banner .= '<span class="disable">首页</span>';
        $page_banner .= '<span class="disable"><<上一页</span>';
    }
    
    //page start
    
    //初始化数据
    $start = 1;
    $end = $total_page;
    
    if ($total_page > $showPage){
        if ($page > $pageOffset+1) {
            $page_banner.= '...';
        }
    
        if ($page > $pageOffset) {
    
            //开始位置总是当前页-偏移量
            $start = $page - $pageOffset;
    
            //右边的显示码加偏移量小于总页数就显示当前页+偏移量否则就显示最后页
            $end = $total_page > ($page + $pageOffset) ? ($page + $pageOffset) : $total_page;
        } else {
            $start = 1;
            $end = $total_page > $showPage ? $showPage : $total_page;
        }
    
        if ($page+$pageOffset > $total_page) {
    
            //实际的开始位置-(当前位置+偏移量-最后一页)
            $start = $start - ($page + $pageOffset - $end);
        }
    }
    
    for($i = $start; $i <= $end; $i++ ){
    
        if ($page == $i) {
            $page_banner .= '<span class="current">'.$i.'</span>';
        } else {
            $page_banner .= '<a href="'.$_SERVER['PHP_SELF'].'?p='.($i).'">'.$i.'</a>';
        }
    }
    
    
    if ($total_page > $showPage && $total_page > $page + $pageOffset) {
        $page_banner.= '...';
    }
    
    //page end
    if ($page < $total_page) {
        $page_banner .= '<a href="'.$_SERVER['PHP_SELF'].'?p='.($page+1).'">下一页>></a>';
        $page_banner .= '<a href="'.$_SERVER['PHP_SELF'].'?p='.($total_page).'">尾页</a>';
    } else {
        $page_banner .= '<span class="disable">下一页>></span>';
        $page_banner .= '<span class="disable">尾页</span>';
    }
    $page_banner .= '共'.$total_page.'页';
    $page_banner .= '到第<form action="mypage.php" method="get">';
    $page_banner .= '<input type="text" size="2" name="p"/>页';
    $page_banner .= '<input type="submit" value="确定"/>';
    $page_banner .= '</form></div>';
    echo $page_banner;
  • 相关阅读:
    Good Bye 2014 B. New Year Permutation(floyd )
    hdu 5147 Sequence II (树状数组 求逆序数)
    POJ 1696 Space Ant (极角排序)
    POJ 2398 Toy Storage (叉积判断点和线段的关系)
    hdu 2897 邂逅明下 (简单巴什博弈)
    poj 1410 Intersection (判断线段与矩形相交 判线段相交)
    HDU 3400 Line belt (三分嵌套)
    Codeforces Round #279 (Div. 2) C. Hacking Cypher (大数取余)
    Codeforces Round #179 (Div. 2) B. Yaroslav and Two Strings (容斥原理)
    hdu 1576 A/B (求逆元)
  • 原文地址:https://www.cnblogs.com/gide/p/4606753.html
Copyright © 2011-2022 走看看