这两天在学习PHP
想做一个前端后台都包含的网站
看了一些视频发现大牛们都是将封装起来实现代码的重用性
本人技拙也写了个分页条函数的封装
分页条在用PHP网站开发中十分常用
通过封装代码来提高网站开发效率
function pageBar($table,$pageSize,$showPage=5){ //第一个参数为表名 第二个参数为每页显示几个 需要与之前遍历数据处相同 $page = $_GET['p']; $sql1 = "select COUNT(*) from ".$table; $res1 = mysql_fetch_array(mysql_query($sql1)); $total = $res1[0]; $totalPage = ceil($total / $pageSize); //获取总页数 $pageOffset = ($showPage - 1) / 2; //页码偏移量 $pageBanner = ""; $pageSelf = $_SERVER['PHP_SELF']; $start = 1; //开始页码 $end = $totalPage; //结束页码 if($page > 1){ $pageBanner .= "<a href='".$pageSelf."?p=1'>首页</a>"; $pageBanner .= "<a href='".$pageSelf."?p=".($page - 1)."'>上一页</a>"; } if($totalPage > $showPage){ //当总页数大于显示页数时 if($page > $pageOffset + 1){ //当当前页大于页码偏移量+1时,也就是当页码为4时 开始页码1替换为... $pageBanner .= "..."; } if($page > $pageOffset){ //当当前页大于页码偏移量时 开始页码变为当前页-偏移页码 $start = $page - $pageOffset; $end = $totalPage > $page + $pageOffset ? $page + $pageOffset : $totalPage; //如果当前页数+偏移量大于总页数 那么$end为总页数 }else{ $start = 1; $end = $totalPage > $showPage ? $showPage : $totalPage; } if($page + $pageOffset > $totalPage){ $start = $start - ($page + $pageOffset - $end); } } for($i = $start ; $i <= $end ; $i++){ //循环出页码 if($i == $page){ $pageBanner .= "<span>".$i."</span>"; }else{ $pageBanner .= "<a href='".$pageSelf."?p=".$i."'>".$i."</a>"; } } if($totalPage > $showPage && $totalPage > $page + $pageOffset){ //当总页数大于页码显示页数时 且总页数大于当前页+偏移量 $pageBanner .= "..."; } if($page < $totalPage){ $pageBanner .= "<a href='".$pageSelf."?p=".($page + 1)."'>下一页</a>"; $pageBanner .= "<a href='".$pageSelf."?p=".$totalPage."'>尾页</a>"; } echo $pageBanner; }
上面是进行的代码封装 可以直接来调用
pageBar($table,$pageSize,$showPage=5);
三个参数解释如下
$table 表名
$pageSize 每页显示多少条 需要与之前遍历显示数据相同
$showPage 可选参数,可见页数,默认为5,注意里面需要填奇数!
当$showPage=5时 这里可见页数只有5页
完整代码如下图
1 <?php 2 $link = mysql_connect('localhost','root','123456'); 3 mysql_select_db('test',$link); 4 mysql_query("set names UTF8"); 5 $page = $_GET['p']; 6 $pageSize = 2; 7 $sql = "select * from page limit ".($page-1)*$pageSize.",$pageSize"; 8 $res = mysql_query($sql); 9 echo "<table width=40% border=1 cellspacing=0>"; 10 echo "<tr><td>用户名</td><td>密码</td></tr>"; 11 while($row = mysql_fetch_array($res)){ 12 echo "<tr><td>".$row['username']."</td><td>".$row['password']."</td></tr>"; 13 } 14 echo "</table>"; 15 16 function pageBar($table,$pageSize,$showPage=5){ //第一个参数为表名 第二个参数为每页显示几个 需要与之前遍历数据处相同 17 $page = $_GET['p']; 18 $sql1 = "select COUNT(*) from ".$table; 19 $res1 = mysql_fetch_array(mysql_query($sql1)); 20 $total = $res1[0]; 21 $totalPage = ceil($total / $pageSize); //获取总页数 22 $pageOffset = ($showPage - 1) / 2; //页码偏移量 23 $pageBanner = ""; 24 $pageSelf = $_SERVER['PHP_SELF']; 25 $start = 1; //开始页码 26 $end = $totalPage; //结束页码 27 if($page > 1){ 28 $pageBanner .= "<a href='".$pageSelf."?p=1'>首页</a>"; 29 $pageBanner .= "<a href='".$pageSelf."?p=".($page - 1)."'>上一页</a>"; 30 } 31 if($totalPage > $showPage){ //当总页数大于显示页数时 32 if($page > $pageOffset + 1){ //当当前页大于页码偏移量+1时,也就是当页码为4时 开始页码1替换为... 33 $pageBanner .= "..."; 34 } 35 if($page > $pageOffset){ //当当前页大于页码偏移量时 开始页码变为当前页-偏移页码 36 $start = $page - $pageOffset; 37 $end = $totalPage > $page + $pageOffset ? $page + $pageOffset : $totalPage; 38 //如果当前页数+偏移量大于总页数 那么$end为总页数 39 }else{ 40 $start = 1; 41 $end = $totalPage > $showPage ? $showPage : $totalPage; 42 } 43 if($page + $pageOffset > $totalPage){ 44 $start = $start - ($page + $pageOffset - $end); 45 } 46 } 47 for($i = $start ; $i <= $end ; $i++){ //循环出页码 48 if($i == $page){ 49 $pageBanner .= "<span>".$i."</span>"; 50 }else{ 51 $pageBanner .= "<a href='".$pageSelf."?p=".$i."'>".$i."</a>"; 52 } 53 54 } 55 if($totalPage > $showPage && $totalPage > $page + $pageOffset){ //当总页数大于页码显示页数时 且总页数大于当前页+偏移量 56 $pageBanner .= "..."; 57 } 58 if($page < $totalPage){ 59 $pageBanner .= "<a href='".$pageSelf."?p=".($page + 1)."'>下一页</a>"; 60 $pageBanner .= "<a href='".$pageSelf."?p=".$totalPage."'>尾页</a>"; 61 } 62 echo $pageBanner; 63 } 64 65 ?> 66 <!DOCTYPE html> 67 <html lang="en"> 68 <head> 69 <meta charset="UTF-8"> 70 <title>11</title> 71 <style type="text/css"> 72 *{margin: 0;padding: 0;} 73 .div1{width: 400px;padding: 5px;border: 1px solid red;text-align: center;} 74 .div1 a{margin-left: 5px;color: #000;text-decoration: none;color: red;} 75 .div1 span{margin-left: 5px;text-decoration: underline;} 76 </style> 77 </head> 78 <body> 79 <div class="div1"> 80 <?php pageBar("page",2); ?> 81 </div> 82 </body> 83 </html>
这里注意第7行的$pageSize需要与下面函数调用传入参数相同
里面只包含a元素和span标签
span代表当前页的页码
所以直接可以在html代码里面套个div再去直接修改里面的样式