ホームページ  >  記事  >  バックエンド開発  >  PHP ページングの原理と PHP ページング コードの包括的な例

PHP ページングの原理と PHP ページング コードの包括的な例

WBOY
WBOYオリジナル
2016-07-25 08:52:451833ブラウズ
  1. /**
  2. * PHP ページネーション コード
  3. **/
  4. /**
  5. * データベースへのリンク
  6. * bbs.it-home.org
  7. * @param string $strHost データベース サーバーのホスト アドレス
  8. * @param string $strAccount データベース アカウント
  9. * @param string $strPassword データベースのパスワード
  10. * @return resource
  11. **/
  12. function mysqlConnect($strHost,$strAccount,$strPassword,$strDBname)
  13. {
  14. $strHost=trim ($strHost);
  15. $strAcount=trim($strAccount);
  16. $strPassword=trim($strPassword);
  17. $resLink=mysql_connect($strHost,$strAccount,$strPassword);
  18. if(!$resLink)
  19. {
  20. return false;
  21. }
  22. else
  23. { //set names ... データベースのエンコーディングに従って設定します
  24. mysql_query('set names utf8',$resLink);
  25. $isValidate=mysql_select_db($strDBname,$resLink) ;
  26. if($isValidate)
  27. {
  28. return $resLink;
  29. }
  30. else
  31. {
  32. return false;
  33. }
  34. }
  35. }
  36. /**
  37. *ページングの現在のページ番号を受け入れ、対応するパラメーター値を計算します
  38. *以下を含めます: 開始ページ番号 $arrParameter['start']
  39. * 終了ページ番号 $arrParameter['end']
  40. * レコードの総数 $arrParameter[ 'all' ]
  41. * 各ページに表示されるレコードの数 $arrParameter['nums']
  42. * ページに表示されるリンクの数 $arrParameter['links']
  43. * クエリされる SQL ステートメント $arrParameter['sql']
  44. * ページングバーの種類 $arrParameter['tag']
  45. *
  46. int $intPage 現在のページ番号の値
  47. int $intNums 各ページに表示されるレコード数
  48. int $intLinks ページに表示されるリンクの数
  49. string $strTablename Displayページ内のデータテーブル
  50. resource $resLink データ接続ハンドル
  51. array
  52. **/
  53. function CalculateParamester($intPage,$intNums,$ intLinks, $strTablename,$resLink){
  54. $intPage=(int)$intPage;
  55. $intNums=(int)$intNums;
  56. $intLinks=(int)$intLinks;
  57. // 表示リンク数が足りない場合奇数の場合は奇数に調整します
  58. if($intLinks % 2 == 0){
  59. $intLinks--;
  60. }
  61. //各ページに表示されるレコード数が 0 以下の場合は調整します。 10にします
  62. if($intNums <= 0){
  63. $intNums =10;
  64. }
  65. //総ページ数を計算します
  66. $strSql1="select count(*) as num from `{$strTablename}` ";
  67. $resObj1=mysql_query($strSql1,$resLink);
  68. $arrObj1 =mysql_fetch_assoc($resObj1);
  69. $intAllRecords=$arrObj1['num'];
  70. $intAllPage=ceil($intAllRecords/$intNums);
  71. // SQL ステートメント制限キーワードの最初のパラメーター
  72. $intOffset=( $intPage-1)*$intNums;
  73. // 前のページと次のページのみを表示します。つまり、表示されるリンクの数は以下です。 0
  74. if($intLinks <= 0){
  75. $strSql2="select * from ` {$strTablename}` 制限 {$intOffset},{$intNums}";
  76. $arrParameter['start']=null;
  77. $arrParameter['end']=null;
  78. $arrParameter['page']=$intPage ;
  79. $arrParameter['nums']=$intNums;
  80. $arrParameter['links']=null;
  81. $arrParameter[' all']=$intAllPage;
  82. $arrParameter['sql']=$strSql2;
  83. $ arrParameter['tag']=1;
  84. //ページングバーコードが表示される場合、つまり表示されるリンクの数が多くなるthan 0
  85. }else{
  86. //レコードの合計が0より大きい場合
  87. if($intAllPage > 0){
  88. //現在のページ番号の値を決定します
  89. if($intPage <= 0){
  90. $intPage=1;
  91. }
  92. if($intPage >= $intAllPage){
  93. $intPage=$intAllPage;
  94. }
  95. $ intHalfLinks=floor($intLinks/2);
  96. //スタートページの値を計算する数値
  97. $intStartPage=$intPage-$intHalfLinks;
  98. if($intStartPage $intStartPage=1;
  99. }
  100. if( ($intAllPage-$intPage) < $intHalfLinks){
  101. //$ intStartPage=$intPage-$intHalfLinks-($intHalfLinks-($intAllPage-$intPage));
  102. //$intStartPage=$intPage-$intHalfLinks- $intHalfLinks+$intAllPage-$intPage;
  103. $intStartPage=$intAllPage-2* $intHalfLinks;
  104. }
  105. //終了ページ番号の値を計算します
  106. $intEndPage=$intPage+$intHalfLinks;
  107. if($intEndPage < $intLinks && $ intAllPage > "select * from `{$strTablename}` limit { $intOffset},{$intNums}";
  108. $arrParameter['start']=$intStartPage;
  109. $arrParameter['end']=$intEndPage;
  110. $arrParameter['page']=$intPage;
  111. $arrParameter[ 'nums']=$intNums;
  112. $arrParameter['links']=$intLinks;
  113. $arrParameter['all']=$intAllPage;
  114. $arrParameter['sql ']=$strSql2;
  115. $arrParameter['tag ']=2;
  116. //レコードの合計が0の場合
  117. }else{
  118. $arrParameter['start']=null;
  119. $arrParameter['end' ]=null;
  120. $arrParameter['page'] =null;
  121. $arrParameter['nums']=null;
  122. $arrParameter['links']=null;
  123. $arrParameter['all']=null;
  124. $ arrParameter['sql']=null;
  125. $arrParameter ['tag']=3;
  126. }
  127. }
  128. return $arrParameter;
  129. }
  130. /**
  131. * ページングバーを作成します
  132. *
  133. * @param int $intPage 現在表示されているページ番号の値
  134. * @param int $intStartPage 開始ページ番号
  135. * @param int $intEndPage 終了ページ番号
  136. * @param int $intAllRecords総レコード数
  137. * @param int $intTag ページングバータイプタグ
  138. * @return string
  139. **/
  140. function createPagingItem($intPage,$intStartPage,$intEndPage,$intAllPage,$intTag){
  141. $strPageItem='';
  142. //前のページと次のページのみを表示します。表示されるリンクの数は 0 以下です
  143. if($intTag == 1){
  144. if($intAllPage <= 0){
  145. $strPageItem.='ホームページ 最後のページ';
  146. }else{
  147. if ( $intPage == 1){
  148. $strPageItem.="ホーム 前のページ";
  149. $strPageItem.=" ";
  150. }else{
  151. $strPageItem.="ホームページ";
  152. $strPageItem.="  ";
  153. $strPageItem.="前のページ";
  154. $strPageItem.="  ";
  155. }
  156. if($intPage == $intAllPage){
  157. $strPageItem.="次のページ   最後ページ";
  158. }else{
  159. $strPageItem.="次のページ";
  160. $strPageItem.="  ; ";
  161. $strPageItem.="最後のページ";
  162. }
  163. }
  164. }
  165. //表示時ページング バーコードでは、表示されるリンクの数が 0 より大きくなります
  166. if($intTag == 2){
  167. if($intPage == 1){
  168. $strPageItem.="Homepage   前のページ";
  169. $strPageItem。 ="  ";
  170. }else{
  171. $strPageItem.="ホームページ";
  172. $ strPageItem.="  ";
  173. $strPageItem.="前のページ";
  174. $ strPageItem.="  ";
  175. }
  176. for($i=$intStartPage;$i<=$intEndPage;$i++){
  177. if($i == $intPage){
  178. $strPageItem.=$i ;
  179. }else{
  180. $strPageItem.="< ;a href='?page={$i}'>[".$i."]";
  181. }
  182. $strPageItem.="   ";
  183. }
  184. if($ intPage == $intAllPage){
  185. $strPageItem.="次のページ  最後のページ";
  186. }else{
  187. $strPageItem.="次のページ";
  188. $strPageItem.="  ";
  189. $strPageItem.="最後のページ";
  190. }
  191. }
  192. //レコードの合計が0の場合
  193. if($intTag == 3){
  194. $strPageItem.='ホームページ =mysql_query($strSql,$resLink) ;
  195. $arrObj=array();
  196. $strOutPutData='';
  197. $arrFieldsCode=array_keys($arrFields);
  198. while(@$arrRow=mysql_fetch_assoc($resObj)){
  199. $arrObj[]=$arrRow;
  200. }
  201. $strOutPutData.="";
  202. $strOutPutData.='
  203. ';
  204. foreach($arrFieldsCode as $strVal){
  205. $strOutPutData.="";
  206. }
  207. $strOutPutData.="
  208. ";
  209. foreach($arrObj as $arrVal){
  210. $strOutPutData. ="
  211. ";
  212. foreach($arrFieldsCode as $strVal){
  213. $strOutPutData.="
  214. ";
  215. }
  216. $strOutPutData.="
  217. ";
  218. }
  219. $strOutPutData.="
  220. ".$arrVal[trim($strVal)]."
    ";
  221. return $strOutPutData;
  222. }
  223. // データベースに接続して選択します
  224. // 注: データベース名だけでなく、データベースのアカウントとパスワードも変更する必要があります
  225. $resLink=mysqlConnect('localhost','root','root','ztlibrary');
  226. // ページングパラメータに関する注意点を確認してください: データテーブル名を変更する必要があります
  227. $arrParameter=calculateParamester(@$_GET['page']?$_GET['page']:1,
  228. 10,5,'book_info' ,$resLink);
  229. / /表示されるデータは、テーブルのフィールド名とそのキー値で構成されます。フィールド名の中国語解釈はその要素値です
  230. //注: 次の配列を変更する必要があります。データテーブルに
  231. $arrFields=array('Id_code' =>'Book_name'=>'Book name',
  232. 'Book_ISBN'=>'ISBN','Contribute_man'=>'Source','Issue_time '=>'公開時間' ,'Storing_time'=>'保管時間');
  233. ?>
  234. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  235. php ページングのデモンストレーション - www.yuju100.com
  236. //ページングデータを出力
  237. echo outPutData($arrParameter['sql'],$arrFields,$resLink);
  238. ?>
  • < ;?php
  • //ページングバーを表示
  • echo createPagingItem($arrParameter['page'],$arrParameter['start'],$arrParameter['end'],
  • $arrParameter['all '],$arrParameter[' tag']);
  • ?>
  • コードをコピー


  • 声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。