1. 程式人生 > >後臺管理列表分頁封裝

後臺管理列表分頁封裝

今天整理下PHP後臺分頁封裝:



其大致的原理,就是通過$_REQUEST[‘page’]獲取當前的頁碼數,來渲染要生成的頁碼列表,每次點選新的頁碼就會重新渲染

封裝這個函式需要哪些引數:

(1) 當前要渲染的頁碼值

(2) 總的頁碼數

(3) 其他search條件 &cid=2&pid=6 …

function showPage($page, $totalPages, $where = null)
{       

         $url = $_SERVER['PHP_SELF'];

         $sep = '  ';

         $where = $where == null ? null : '&'.$where;

         $p = "";

 

         //拼湊分頁連結

         $indexLinkStr = ($page == 1) ? "首頁" : "<a href="{$url}?page=1{$where}">首頁</a>";

         $lastLinkStr = ($page == $totalPages) ? "尾頁" : "<a href="{$url}?page={$totalPages}{$where}">尾頁</a>";

         $prevLinkStr = ($page == 1) ? "上一頁" : "<a href="{$url}?page='.($page-1).'{$where}">上一頁</a>";

         $nextLinkStr = ($page == $totalPages) ? "下一頁" : "<a href="{$url}?page='.($page+1).'{$where}">下一頁</a>";

         $cTotalStr = "總共{$totalPages}頁,當前{$page}頁";

 

         //分頁連結

         for($i = 1;$i<=$totalPages;$i++)
         {

                   if($page == $i)
                   {

                            $p .= "[{$i}]";
                   }
                   else

                   {

                            $p .= "<a href="{$url}?page={$i}{$where}">[{$i}]</a>";

                   }

         }

 

         echo $cTotalStr.'<br/>'.$indexLinkStr.$sep.$prevLinkStr.$sep.$p.$sep.$nextLinkStr.$sep.$lastLinkStr;

}

在某個頁面載入資料列表的時候,呼叫分頁:

條件:

1)每頁要顯示的記錄數

2)總共的記錄數

3)如果每頁要顯示的記錄數 >總共的記錄數 = 才顯示分頁,也就是呼叫分頁函式

獲取$page等引數的判斷條件:

if(@!!$_REQUEST['page']){

         $page = (int)$_REQUEST['page'];

}else{

         $page = 1;

}

//頁碼判斷 防止在瀏覽器位址列更改不正確的頁碼

if($page < 1 || $page == null || !is_numeric($page)){

         $page = 1;

}

//判斷尾頁 防止位址列輸入的值大於總頁數

if($page > $totalPages){

         $page = $totalPages;

}

總的分頁呼叫封裝:

//管理員分頁封裝

function getAdminPage($pageSize = 2)
{

         $link = connect();

         $sql = "select * from imooc_admin";

         $totalRows = getResultNum($link,$sql); //獲取總記錄數

 

         //地址首頁頁碼判斷
         if(@!!$_REQUEST['page']){

                   $page = (int)$_REQUEST['page'];

         }else{

                   $page = 1;

         }

 

         //頁碼判斷 防止在瀏覽器位址列更改不正確的頁碼
         if($page < 1 || $page == null || !is_numeric($page)){

                   $page = 1;

         }

 

         //獲取頁碼總數和頁碼的偏移量 好進行資料庫limit查詢
         //每頁多少條$pageSize
         $totalPages = ceil($totalRows/$pageSize); //頁碼數

         $offset = ($page - 1)*$pageSize; //記錄數偏移量

 

         //獲取當前頁碼對應的頁面
         $termWhere = "limit {$offset} , {$pageSize}";

 

         //判斷尾頁 防止位址列輸入的值大於總頁數
         if($page > $totalPages){

                   $page = $totalPages;

         }

 

         $rowsData = listAdminData($termWhere);

         if(!$rowsData)
         {

                   alertMes('當前沒有使用者資訊,請先新增!','addAdmin.php');

         }

 

         $arr = array();

         $arr['rowsData'] = $rowsData;

         $arr['page'] = $page;

         $arr['totalPages'] = $totalPages;

         $arr['totalRows'] = $totalRows;

 

         return $arr;

}

列表頁面接收:

$pageSize = 3;

$array = getAdminPage($pageSize);

$rowsData = $array['rowsData'];

$page = $array['page'];

$totalPages = $array['totalPages'];

$totalRows = $array['totalRows'];

 帥有個屁用!到頭來還不是被卒吃掉!