It's our wits that make us men.

PHP分页示例代码

Posted on By lk


mypage.php:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>分页</title>
        <meta name="keywords" content="分页设计">
            <meta name="description" content="分页">
                <meta name="author" content="分页">
                    <meta http-equiv="content-type" content="text/html;charset=UTF-8">
                        <link rel="stylesheet" type="text/css" href="page.css">
                            </head>
                            <body>

        <?php
        header("Content-Type:text/html;charset=UTF-8");
		//1传入页码
		//$page=$_GET['p'];
        $page = isset($_GET['p']) ? $_GET['p'] : 1;
		//2根据页码取出数据:php->mysql处理
        $host = "localhost";
        $username = "root";
        $password = "";
        $db = "imooc";
        $pageSize = 3; //每页显示条数
        $showPage = 5; //显示页码个数
		//链接数据库
        $conn = mysql_connect($host, $username, $password);
        if (!$conn) {
            echo "数据库链接失败";
            exit;
        }
		//选择数据库
        mysql_select_db($db);
		//设置数据库编码格式
        mysql_query("set names utf8");
		//编写sql获取分页数据
		//$sql="select goods_id,goods_name,goods_price from tdb_goods order by goods_id limit" .($page-1)*10. ",10";

        $sql = "select goods_id,goods_name,goods_price from tdb_goods order by goods_id limit " . (($page - 1) * $pageSize) . ",{$pageSize}";
		//把sql语句传到数据库
        $result = mysql_query($sql);
		//处理数据
        echo "<div class='content'>";
        echo "<table border=1 cellspacing=0 width=60%  align=center>";
        echo "<caption><h1>商品表</h1></caption>";
        echo '<th>商品ID</th>';
        echo '<th>商品名称</th>';
        echo '<th>商品价格</th>';
        echo '</tr>';
        while ($row = mysql_fetch_assoc($result)) {
		//echo $row["goods_id"].'-'.$row["goods_name"]."<br>";
            echo "<tr>";
            echo "<td>{$row['goods_id']}</td>";
            echo "<td>{$row['goods_name']}</td>";
            echo "<td>{$row['goods_price']}</td>";
            echo "</tr>";
        }
        echo "</table>";
        echo "</div>";
		//释放结果 关闭连接
        mysql_free_result($result);
		//获取数据总数
        $total_sql = "select count(*) from tdb_goods";
        $total_result = mysql_fetch_array(mysql_query($total_sql));
        $total = $total_result[0];
        /* $result=mysql_query("select * from tdb_goods");
          $total=mysql_num_rows($result); */
		//计算页数
        $total_page = ceil($total / $pageSize);
		//echo "总条数{$total}";exit;

        mysql_close($conn);
	//3显示数据+分页条
        $page_banner = "<div class=\"page\">";
	//计算偏移量
        $pageoffset = ($showPage - 1) / 2;

        if ($page > 1) {//如果是首页 则不显示上一页首页
            $page_banner.="<a href='" . $_SERVER['PHP_SELF'] . "?p=1'>首页</a>";
            $page_banner.="<a href='" . $_SERVER['PHP_SELF'] . "?p=" . ($page - 1) . "'><上一页</a>";
        } else {
            $page_banner.="<span class='disable'>首页</span>";
            $page_banner.="<span class='disable'><上一页</span>";
        }
	//初始化数据
        $start = 1; //哪一条开始显示页码
        $end = $total_page;
        if ($total_page > $showPage) {//总页数大于显示页数 如总页数就是5页 显示也是5页
            if ($page > $pageoffset + 1) {//如果当前页大于了偏移量(这里是2)+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);
				//$end=$total_page;
            }
        }
        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_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page-1)."'>上一页</a>";
		//$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page+1)."'>下一页</a>";
        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'  class='className' value='确定'>";
        $page_banner.="</form>";
        $page_banner.="</div>";
        echo $page_banner;
        ?>

    </body>
    </html>

page.css:


body,html{ padding:0px; margin:0px;font-family:"宋体",Arial,Lucida,Verdana,Helvetica,sans-serif; font-size:12px;width:100%;}    
h1,h2,h3,h4,h5,h6,ul,li,dl,dt,dd,form,img,p,label{margin:0; padding:0; border:none; list-style-type:none;}    
div.page{
text-align:center;
}
div.content{
height:300px;
}
div.page a{
border:#aaaadd 1px solid;
padding:2px 5px 2px 5px;
margin:2px;
text-decoration:none;
}
div.page a:link,div.page a:visited {border:1px solid #dedede;color:#696969;text-decoration:none;}    
.page a:hover, .page a:active{border:1px solid #dedede;color:#fff; background-color:#ff6600; background-image:none; border:#ff6600 solid 1px;}  
/*div.page span.current{
border:#000099 1px solid;
background:#000099;
padding:4px 6px 4px 6px;
margin:2px;
color:#fff;
font-weight:bold;
}*/
div.page span.current{
border:1px solid #dedede;
color:#fff;
background-color:#ff6600;
background-image:none;
border:#ff6600 solid 1px;
padding:4px 6px 4px 6px;
margin:2px;
font-weight:bold;
}
div.page span.disable{
border:1px solid ;
padding:2px 5px 2px 5px;
margin:2px;
color:#ddd;
}
div.page form{
display:inline;
}
.className{
line-height:28px;
height:28px;
width:78px;
color:#f7f2ef;
background-color:#ff6600;
font-size:15px;
font-weight:bold;
font-family:Arial;
border:1px solid #ffaa22;
-webkit-border-top-left-radius:6px;
-moz-border-radius-topleft:6px;
border-top-left-radius:6px;
-webkit-border-top-right-radius:6px;
-moz-border-radius-topright:6px;
border-top-right-radius:6px;
-webkit-border-bottom-left-radius:6px;
-moz-border-radius-bottomleft:6px;
border-bottom-left-radius:6px;
-webkit-border-bottom-right-radius:6px;
-moz-border-radius-bottomright:6px;
border-bottom-right-radius:6px;
-moz-box-shadow: inset 0px 1px 0px 0px #fff6af;
-webkit-box-shadow: inset 0px 1px 0px 0px #fff6af;
box-shadow: inset 0px 1px 0px 0px #fff6af;
text-align:center;
display:inline-block;
text-decoration:none;
}
/*a:link {color: #FF0000}  未访问的链接 */
/*a:visited {color: #00FF00}  已访问的链接 */
/*a:hover {color: #FF00FF}  当有鼠标悬停在链接上 */
/*a:active {color: #0000FF}  被选择的链接 */