这两天在学习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再去直接修改里面的样式

 

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