【PHP】分頁條函數封裝

這兩天在學習PHPphp

想作一個前端後臺都包含的網站css

看了一些視頻發現大牛們都是將封裝起來實現代碼的重用性html

本人技拙也寫了個分頁條函數的封裝前端

分頁條在用PHP網站開發中十分經常使用mysql

經過封裝代碼來提升網站開發效率sql

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);學習

三個參數解釋以下fetch

$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再去直接修改裏面的樣式

相關文章
相關標籤/搜索