-
- /**
- * 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 Displayページ内のデータテーブル
- 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 ステートメント制限キーワードの最初のパラメーター
- $intOffset=( $intPage-1)*$intNums;
- // 前のページと次のページのみを表示します。つまり、表示されるリンクの数は以下です。 0
- if($intLinks <= 0){
- $strSql2="select * from ` {$strTablename}` 制限 {$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;
- //ページングバーコードが表示される場合、つまり表示されるリンクの数が多くなるthan 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 $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 > "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.="Homepage 前のページ";
- $strPageItem。 =" ";
- }else{
- $strPageItem.="ホームページ";
- $ strPageItem.=" ";
- $strPageItem.="前のページ";
- $ strPageItem.=" ";
- }
- for($i=$intStartPage;$i<=$intEndPage;$i++){
- if($i == $intPage){
- $strPageItem.=$i ;
- }else{
- $strPageItem.="< ;a href='?page={$i}'>[".$i."]";
- }
- $strPageItem.=" ";
- }
- if($ intPage == $intAllPage){
- $strPageItem.="次のページ 最後のページ";
- }else{
- $strPageItem.="次のページ";
- $strPageItem.=" ";
- $strPageItem.="最後のページ";
- }
- }
- //レコードの合計が0の場合
- if($intTag == 3){
- $strPageItem.='ホームページ =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){
- $strOutPutData.="
";
- }
- $strOutPutData.="
| ";
- foreach($arrObj as $arrVal){
- $strOutPutData. ="
";
- foreach($arrFieldsCode as $strVal){
- $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 name',
- 'Book_ISBN'=>'ISBN','Contribute_man'=>'Source','Issue_time '=>'公開時間' ,'Storing_time'=>'保管時間');
- ?>
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- php ページングのデモンストレーション - www.yuju100.com
- table{
- margin:0px;
- padding:0px;
- border-collapse :collapse;
- border:1px ソリッド #ff0000;
- }
- table td{
- margin:0px;
- padding:0px;
- border-collapse:collapse;
- border:1px ソリッド #ff0000;
- }
-
- //ページングデータを出力
- echo outPutData($arrParameter['sql'],$arrFields,$resLink);
- ?>
- < ;?php
- //ページングバーを表示
- echo createPagingItem($arrParameter['page'],$arrParameter['start'],$arrParameter['end'],
- $arrParameter['all '],$arrParameter[' tag']);
- ?>
-
コードをコピー
|