您的位置:首页 > 编程语言 > PHP开发

PHP+MySQL分页原理实现

2015-07-01 10:12 639 查看
学习日期:20150630

整个功能的实现主要分为三个步骤:

1.传入页码;

2.根据页码取出数据,php->mysql操作;

3.显示数据、分页条。

关键点 在于:

实现定量取指的SQL语句,用到了LIMIT关键字:

SELECT * FROM表名LIMIT 起始位置,显示条数;

$sql = "SELECT*FROM orders LIMIT ".(($page-1)*2).",2";


这句话在书写的时候要注意:LIMIT后面有空格,否则关键字会发生改变;数据库中自增长的编码是从0开始的;起始位置随着页数的变动而变动;起始位置如果用到了计算,要用()括起来。

难点在于:

偏移量的计算以及分页条的多种情况的具体划分。详细见代码及注释:

<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=utf8" >
</head>
<style>
body{
font-size:12px;FONT-FAMILY:verdana;width:100%;
}
div.page{
padding:5px;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:3px 6px 3px 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>
<body>
<?php
/**1传入页码*/
$page = $_GET['p'];//p表示接收的页码数
/**2根据页码取出数据:php-> mysql处理*/
//php操作数据库的配置:1配置主机2配置用户名3密码4数据库DB
$host = "localhost";
$username = "root";
$password = "";
$db = "icharging";
$pageSize = 2;
$showPage = 5;//显示的页码数
//连接数据库
$conn = mysql_connect($host,$username,$password);
if(!$conn){
echo"数据库连接失败";
exit;
}
//选择要操作的数据库
mysql_select_db($db);
//设置数据库编码格式
mysql_query('SET NAMES UTF8');
//编写sql语句获取分页数据SELECT * FROM表名LIMIT起始位置,显示条数
$sql = "SELECT*FROM orders LIMIT ".(($page-1)*2).",2";//该语句的书写要特别注意
//$sql = "SELECT*FROM orders LIMIT 0,10";
//把SQL语句传送到数据库
$result = mysql_query($sql);
//处理接收到的数据
echo "<div class='content'>";
echo "<table border=1 cellspacing=0 width=60% align=center>";//添加表格并设置表格样式
echo "<tr><td>订单编号</td><td>用户手机号</td><td>充电时间</td><td>充电电量</td><td>充电金额</td></tr>";//添加标题,内容写在TD中
while($row = mysql_fetch_assoc($result)){
//echo $row['oid'].'-'.$row['unum'].'-'.$row['stime'].'-'.$row['chargeLevel'].'-'.$row['amount'].'<br>';
echo "<tr>";//行
echo "<td>{$row["oid"]}</td>";//第一列
echo "<td>{$row["unum"]}</td>";//第二列
echo "<td>{$row["stime"]}</td>";//第三列
echo "<td>{$row["chargeLevel"]}</td>";//第四列
echo "<td>{$row["amount"]}</td>";//第五列
echo "</tr>";
}
echo "</table>";
echo "</div>";
//释放结果,关闭链接
mysql_free_result($result);
//获取数据总数
$total_sql = "SELECT COUNT(*)FROM orders";
$total_result = mysql_fetch_array(mysql_query($total_sql));
$total = $total_result[0];
//计算页码数
$total_pages = ceil($total/2);
mysql_close($conn);
/**3显示数据+分页条*/
$page_banner="<div class='page'>";
//计算偏移量
$pageoffset = ($showPage-1)/2;
if($page > 1){
$page_banner.="<a href='".$SEVER['PHP_SELF']."?p=1'>首页</a>";
$page_banner.="<a href='".$SEVER['PHP_SELF']."?p=".($page-1)."'>< 上一页</a>";//用.拼接的时候补课使用{}要用()
}else{
$page_banner.="<span class='disable'>首页</a></span>";
$page_banner.="<span class='disable'>< 上一页</a></span>";
}
//初始化数据
$start = 1;
$end = $total_pages;
//头部省略
if($total_pages > $showPage){
if($page > $pageoffset + 1){
$page_banner.="...";
}
if($page > $pageoffset){
$start = $page - $pageoffset;
$end = $total_pages > $page + $pageoffset?$page + $pageoffset:$total_pages;
}else{
$start = 1;
$end = $total_pages > $showPage?$showPage:$total_pages;
}
if($page + $pageoffset > $total_pages){
$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='".$SEVER['PHP_SELF']."?p=".$i."'>{$i}</a>";
}
}
//尾部省略
if($total_pages > $page+$pageoffset && $total_pages > $showPage){//注意此处满足的条件,必须两者同时成立
$page_banner.="...";
}
if($page < $total_pages){
$page_banner.="<a href='".$SEVER['PHP_SELF']."?p=".($page+1)."'>下一页 ></a>";//p注意是小写字母
$page_banner.="<a href='".$SEVER['PHP_SELF']."?p=".($total_pages)."'>尾页</a>";
}else{
$page_banner.="<span class='disable'>下一页 ></a></span>";
$page_banner.="<span class='disable'>尾页</a></span>";
}
//页面跳转
$page_banner.="<form action = 'mypage.php'>";
$page_banner.=" 到第<input type='text' size='2' name='p'>页";
$page_banner.="<input type='submit' value='确定'>";
$page_banner.="</form>";
$page_banner.="共{$total_pages}页</div>";
echo $page_banner;
?>
</body>
</html>




心得:

实现核心功能—>代码优化—>用户体验优化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: