PHP+MySQL分页原理实现
来源:互联网 发布:淘宝女式薄绒内衣套装 编辑:程序博客网 时间:2024/05/21 11:05
学习日期: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>
心得:
实现核心功能—>代码优化—>用户体验优化
0 0
- PHP+MySQL分页原理实现
- PHP&MYSQL分页原理及实现
- 慕课网学习-- PHP+MySQL分页原理实现
- PHP+MYSQL分页原理
- PHP+MYSQL分页原理
- PHP+MYSQL分页原理
- PHP+MYSQL分页原理
- php+mysql分页原理
- PHP+MySql 分页原理
- PHP分页实现原理
- PHP+mysql实现分页
- MySql+PHP实现分页
- php+mysql实现分页
- [转贴]谈PHP&MYSQL分页原理及实现
- PHP分页原理+代码实现
- php mysql分页实现代码
- PHP 与 MySQL 建立连接 & 分页原理
- php+mysql分页原理案例分析
- php和c通过socket进行通信
- 系统调用和库函数的关系
- UNIX/LINUX使用expect实现人机自动交互功能
- java.util.zip类 ZipInputStream
- [华为机试练习题]25.圆桌游戏
- PHP+MySQL分页原理实现
- 如何当一个android面试官
- Apache Http Client 4 上传多个文件 (示例代码可在 github 上找到)
- 杭电 HDU ACM 1754 I Hate It (线段树)
- 国际化困境(第二篇)
- AutoLayout中的Visual Format Language
- 程序员技术练级攻略
- 测试面试突击——阅读笔记
- 配置Spring数据源