- /**
- * PHP分頁代碼
- * */
- /**
- * 連結資料庫
- * bbs.it-home.org
- * @param string $strHost 資料庫伺服器主機地址
- * @param string $strAccount 資料庫帳號
- * @param string $strPassword 資料庫密碼
- * @return resource
- * */
- function mysqlConnect($strHost,$strAccount,$strPassword,$strDBname)
- {
- $strHost=trim($strHost);
- $strAcount=trim($strAccount);
- $strPassword=trim($strPassword);
- $resLink=mysql_connect($strHost,$strAccount,$strPassword);
- if(!$resLink)
- {
- return false;
- }
- else
- { //set names ... 根據資料庫的編碼進行設定
- mysql_query('set names utf8',$resLink);
- $isValidate=mysql_select_db($strDBname,$resLink);
- if($isValidate)
- {
- return $resLink;
- }
- else
- {
- return false;
- }
- }
- }
- /**
- *接受分頁的當前頁碼,計算出相應的參數值
- *包括:開始頁碼$arrParameter['start']
- * 結束頁碼$arrParameter['end']
- * 總的記錄數$arrParameter['all']
- * 每頁顯示的記錄數$arrParameter['nums']
- * 頁面中顯示的連結數$arrParameter['links']
- * 待查詢的sql語句$arrParameter['sql']
- * 分頁條類型$arrParameter['tag']
- *
- int $intPage 當前頁碼值
- int $intNums 每頁顯示的記錄數
- int $intLinks 頁面中顯示的連結數
- string $strTablename 分頁顯示資料表
- resource $resLink 資料連線控制代碼
- array
- * */
- function calculateParamester($intPage,$intNums,$intLinks,$strTablename,$resLink){
- $intPage=(int)$intPage;
- $intNums=(int)$intNums;
- $intLinks=(int)$intLinks;
- //顯示的連結數不是奇數時調整為奇數
- if($intLinks % 2 == 0){
- $intLinks--;
- }
- //每頁顯示的記錄數不大於0時調整為10
- if($intNums <= 0){
- $intNums=10;
- }
- //計算總的頁數
- $strSql1="select count(*) as num from `{$strTablename}`";
- $resObj1=mysql_query($strSql1,$resLink);
- $arrObj1=mysql_fetch_assoc($resObj1);
- $intAllRecords=$arrObj1['num'];
- $intAllPage=ceil($intAllRecords/$intNums);
- //sql語句limit關鍵字的第一個參數
- $intOffset=($intPage-1)*$intNums;
- //只顯示上一頁下一頁的情況即顯示的連結數不大於0
- if($intLinks <= 0){
- $strSql2="select * from `{$strTablename}` limit {$intOffset},{$intNums}";
- $arrParameter['start']=null;
- $arrParameter['end']=null;
- $arrParameter['page']=$intPage;
- $arrParameter['nums']=$intNums;
- $arrParameter['links']=null;
- $arrParameter['all']=$intAllPage;
- $arrParameter['sql']=$strSql2;
- $arrParameter['tag']=1;
- //顯示分頁條碼時的情況即顯示的連結數大於0
- }else{
- //當總的記錄大於0的情況
- if($intAllPage > 0){
- //確定當前頁碼的值
- if($intPage <= 0){
- $intPage=1;
- }
- if($intPage >= $intAllPage){
- $intPage=$intAllPage;
- }
- $intHalfLinks=floor($intLinks/2);
- //計算開始頁碼的值
- $intStartPage=$intPage-$intHalfLinks;
- if($intStartPage <= 0){
- $intStartPage=1;
- }
- if(($intAllPage-$intPage) < $intHalfLinks){
- //$intStartPage=$intPage-$intHalfLinks-($intHalfLinks-($intAllPage-$intPage));
- //$intStartPage=$intPage-$intHalfLinks-$intHalfLinks+$intAllPage-$intPage;
- $intStartPage=$intAllPage-2*$intHalfLinks;
- }
- //計算結束頁碼的值
- $intEndPage=$intPage+$intHalfLinks;
- if($intEndPage < $intLinks && $intAllPage >=$intLinks){
- $intEndPage=$intLinks;
- }
- if($intEndPage > $intAllPage){
- $intEndPage=$intAllPage;
- }
- //建立待執行的sql語句
- $strSql2="select * from `{$strTablename}` limit {$intOffset},{$intNums}";
- $arrParameter['start']=$intStartPage;
- $arrParameter['end']=$intEndPage;
- $arrParameter['page']=$intPage;
- $arrParameter['nums']=$intNums;
- $arrParameter['links']=$intLinks;
- $arrParameter['all']=$intAllPage;
- $arrParameter['sql']=$strSql2;
- $arrParameter['tag']=2;
- //當總的記錄等於0的情況
- }else{
- $arrParameter['start']=null;
- $arrParameter['end']=null;
- $arrParameter['page']=null;
- $arrParameter['nums']=null;
- $arrParameter['links']=null;
- $arrParameter['all']=null;
- $arrParameter['sql']=null;
- $arrParameter['tag']=3;
- }
- }
- return $arrParameter;
- }
- /**
- * 建立分頁條
- *
- * @param int $intPage 當前顯示的頁碼值
- * @param int $intStartPage 開始頁碼
- * @param int $intEndPage 結束頁碼
- * @param int $intAllRecords 總的記錄數
- * @param int $intTag 分頁條類型標記
- * @return string
- * */
- function createPagingItem($intPage,$intStartPage,$intEndPage,$intAllPage,$intTag){
- $strPageItem='';
- //只顯示上一頁下一頁的情況即顯示的連結數不大於0
- if($intTag == 1){
- if($intAllPage <= 0){
- $strPageItem.='首頁 尾頁';
- }else{
- if($intPage == 1){
- $strPageItem.="首頁 上一頁";
- $strPageItem.=" ";
- }else{
- $strPageItem.="首頁";
- $strPageItem.=" ";
- $strPageItem.="上一頁";
- $strPageItem.=" ";
- }
- if($intPage == $intAllPage){
- $strPageItem.="下一頁 尾頁";
- }else{
- $strPageItem.="下一頁";
- $strPageItem.=" ";
- $strPageItem.="尾頁";
- }
- }
- }
- //顯示分頁條碼時的情況即顯示的連結數大於0
- if($intTag == 2){
- if($intPage == 1){
- $strPageItem.="首頁 上一頁";
- $strPageItem.=" ";
- }else{
- $strPageItem.="首頁";
- $strPageItem.=" ";
- $strPageItem.="上一頁";
- $strPageItem.=" ";
- }
- for($i=$intStartPage;$i<=$intEndPage;$i++){
- if($i == $intPage){
- $strPageItem.=$i;
- }else{
- $strPageItem.="[".$i."]";
- }
- $strPageItem.=" ";
- }
- if($intPage == $intAllPage){
- $strPageItem.="下一頁 尾頁";
- }else{
- $strPageItem.="下一頁";
- $strPageItem.=" ";
- $strPageItem.="尾頁";
- }
- }
- //當總的記錄等於0的情況
- if($intTag == 3){
- $strPageItem.='首頁 尾頁';
- }
- return $strPageItem;
- }
- /**
- * 擷取並輸出資料
- *
- * @param string $strSql 查詢的sql語句
- * @param array $arrFields 需要顯示的欄位所組成的一個數組
- * @param resource $resLink 資料連線控制代碼
- * @return string
- * */
- function outPutData($strSql,$arrFields,$resLink){
- $resObj=mysql_query($strSql,$resLink);
- $arrObj=array();
- $strOutPutData='';
- $arrFieldsCode=array_keys($arrFields);
- while(@$arrRow=mysql_fetch_assoc($resObj)){
- $arrObj[]=$arrRow;
- }
- $strOutPutData.="
- $strOutPutData.='
- foreach($arrFieldsCode as $strVal){
- }
- foreach($arrObj as $arrVal){
- foreach($arrFieldsCode as $strVal){
- }
- }
";
';
- $strOutPutData.="
".$arrFields[trim($strVal)]." | ";
- $strOutPutData.="
";
- $strOutPutData.="
";
- $strOutPutData.="
".$arrVal[trim($strVal)]." | ";
- $strOutPutData.="
";
- $strOutPutData.="
";
- return $strOutPutData;
- }
- // 串連並選擇資料庫
- // 注意:你應該修改資料庫帳號和密碼以及資料庫名稱
- $resLink=mysqlConnect('localhost','root','root','ztlibrary');
- // 求出分頁參數 注意:你應該修改資料表名稱
- $arrParameter=calculateParamester(@$_GET['page']?$_GET['page']:1,
- 10,5,'book_info',$resLink);
- //待顯示的資料,由表的欄位名為其索引值,欄位名的中文解釋為其元素值
- //注意:你應該根據你的資料表修改下面這個數組
- $arrFields=array('Id_code'=>'圖書編碼', 'Book_name'=>'圖書名稱',
- 'Book_ISBN'=>'ISBN','Contribute_man'=>'來源','Issue_time'=>'出版時間','Storing_time'=>'入庫時間');
- ?>
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- php分頁示範--www.yuju100.com
- //輸出分頁資料
- echo outPutData($arrParameter['sql'],$arrFields,$resLink);
- ?>
- //顯示分頁條
- echo createPagingItem($arrParameter['page'],$arrParameter['start'],$arrParameter['end'],
- $arrParameter['all'],$arrParameter['tag']);
- ?>
複製代碼 |