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再去直接修改里面的样式

 posted on 2016-01-04 20:27  五只米波丶  阅读(70)  评论(0编辑  收藏  举报