在我做過這么多的php開發了我發現兩種分頁類型,一種分頁是直接把數據庫連接與分頁連接在了一起,另外一種分頁函數只有分頁的邏輯判斷并沒有數據庫的參與了,后者更好維護與重復使用一些,前者維護麻煩不好重復利用,下面我都給大家整理幾個例子.
例子一,這個分頁函數就有連接數據庫再查看,代碼不詳細解說了,注釋里有:
- <?php
- //page當前頁,num每頁的頁數
- $page=isset($_GET['page'])?intval($_GET['page']):1;
- $num=5;
- $conn = mysql_connect('127.0.0.1','root','');
- if (!$conn) {
- die('Could not connect:'.mysql_error());
- }
- mysql_select_db('shop');
- //獲取記錄總數
- $total=mysql_num_rows(mysql_query("select * from user"));
- //計算頁數
- $pagenum=ceil($total/$num);
- //限制頁數不能超出范圍
- If($page>$pagenum || $page == 0){
- Echo 'Error : Can Not Found The page.';
- Exit;
- }
- //語句“Select * from table limit 0,10”從table表提取十條信息,0為起點,10為提取的數目
- //$offset為起點值,如當前頁為第一頁,每頁5條,起點即為0,同理當前為第二頁,起點將為5
- $offset=($page-1)*$num;
- $result=mysql_query("select * from user limit $offset,$num");
- while($it=mysql_fetch_array($result)){
- echo 'id:'.$it['id'].' name:'.$it['name'].'<br />';
- }
- //顯示鏈接頁面切換鏈接,當前頁無鏈接
- for($i=1;$i<=$pagenum;$i++){
- $show=($i!=$page)?"<a href='index.php?page=".$i."'>$i</a>":"<b>$i</b>";
- echo $show." ";
- }
- echo $total.'條記錄,每頁5條,共'.$pagenum.'頁';
- mysql_free_result($result);
- mysql_close($conn);
- ?>
例子二,直接的把分頁代碼邏輯提出來,重復利用比較好,代碼如下:
- <?php
- /*
- #函數:csPage
- #功能:返回頁面列表
- */
- Function csPage($iPage,$aPage,$urlStart,$urlEnd){
- $tmp = "";
- if($iPage == 1 && $aPage == 1){
- $tmp = "<strong> 1/1 </strong>";
- }else{
- if($iPage == 1){
- $tmp = "<span> |< </span><span> << </span>";
- }else{
- $tmp = '<a title="首頁" href="' . $UrlStart . 1 . $urlEnd . '"> |< </a><a title="上一頁" href="' . $UrlStart . ($iPage-1) . $urlEnd . '"> << </a>';
- }
- $tmp .= "<strong> " . $iPage . "/" . $aPage . " </strong>";
- if($iPage == $aPage){
- $tmp .= '<span> >> </span><span> >| </span>';
- }else{
- $tmp .= '<a title="下一頁" href="' . $urlStart . ($iPage+1) . $urlEnd .' "> >> </a><a title="尾頁" href="' . $urlStart . $aPage . $urlEnd . '"> >| </a>';
- }
- }
- return $tmp;
- }
- ?>
總結一下:如果讓我們選擇可能我會選擇第二種方法這樣維護好實現方法簡單,第一種分頁適合初學者合適簡單但維護復雜.
新聞熱點
疑難解答