1 function pageBar($table,$pageSize,$showPage=5){ //第一个参数为表名 第二个参数为每页显示几个 需要与之前遍历数据处相同 2 $page = $_GET['p']; 3 $sql1 = "select COUNT(*) from ".$table; 4 $res1 = mysql_fetch_array(mysql_query($sql1)); 5 $total = $res1[0]; 6 $totalPage = ceil($total / $pageSize); //获取总页数 7 $pageOffset = ($showPage - 1) / 2; //页码偏移量 8 $pageBanner = ""; 9 $pageSelf = $_SERVER['PHP_SELF']; 10 $start = 1; //开始页码 11 $end = $totalPage; //结束页码 12 if($page > 1){ 13 $pageBanner .= "<a href='".$pageSelf."?p=1'>首页</a>"; 14 $pageBanner .= "<a href='".$pageSelf."?p=".($page - 1)."'>上一页</a>"; 15 } 16 if($totalPage > $showPage){ //当总页数大于显示页数时 17 if($page > $pageOffset + 1){ //当当前页大于页码偏移量+1时,也就是当页码为4时 开始页码1替换为... 18 $pageBanner .= "..."; 19 } 20 if($page > $pageOffset){ //当当前页大于页码偏移量时 开始页码变为当前页-偏移页码 21 $start = $page - $pageOffset; 22 $end = $totalPage > $page + $pageOffset ? $page + $pageOffset : $totalPage; 23 //如果当前页数+偏移量大于总页数 那么$end为总页数 24 }else{ 25 $start = 1; 26 $end = $totalPage > $showPage ? $showPage : $totalPage; 27 } 28 if($page + $pageOffset > $totalPage){ 29 $start = $start - ($page + $pageOffset - $end); 30 } 31 } 32 for($i = $start ; $i <= $end ; $i++){ //循环出页码 33 if($i == $page){ 34 $pageBanner .= "<span>".$i."</span>"; 35 }else{ 36 $pageBanner .= "<a href='".$pageSelf."?p=".$i."'>".$i."</a>"; 37 } 38 39 } 40 if($totalPage > $showPage && $totalPage > $page + $pageOffset){ //当总页数大于页码显示页数时 且总页数大于当前页+偏移量 41 $pageBanner .= "..."; 42 } 43 if($page < $totalPage){ 44 $pageBanner .= "<a href='".$pageSelf."?p=".($page + 1)."'>下一页</a>"; 45 $pageBanner .= "<a href='".$pageSelf."?p=".$totalPage."'>尾页</a>"; 46 } 47 echo $pageBanner; 48 }
上面是进行的代码封装 可以直接来调用
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再去直接修改里面的样式