首頁  >  文章  >  後端開發  >  php分頁原理與php分頁程式碼綜合實例

php分頁原理與php分頁程式碼綜合實例

WBOY
WBOY原創
2016-07-25 08:52:451584瀏覽
  1. /**
  2. * PHP分頁程式碼
  3. **/
  4. /**
  5. * 連結資料庫
  6. * bbs.it-home.org
  7. * @param string $strHost 資料庫伺服器主機位址
  8. * @param string $strAccount 資料庫帳號
  9. * @parawordm string $strword資料庫密碼
  10. * @return resource
  11. **/
  12. function mysqlConnect($strHost,$ strAccount,$strPassword,$strDBname)
  13. {
  14. $strHost=trim($strHost);
  15. $strAcount=trim($strAccount);
  16. $strPassword=trim($strword); $resLink=mysql_connect($strHost,$strAccount,$strPassword);
  17. if(!$resLink)
  18. {
  19. return false;
  20. }
  21. else { //set names ... 依照資料庫的編碼設定
  22. mysql_query('set names utf8',$resLink);
  23. $isValidate=mysql_select_db($strDBname,$resLink);
  24. if($isValidate) {
  25. return $resLink;
  26. }
  27. else
  28. {
  29. return false;
  30. }
  31. }
  32. }
  33. /
  34. *接受分頁的當前頁碼,計算出對應的參數值
  35. *包括:開始頁碼$arrParameter['start']
  36. * 結束頁碼$arrParameter['end']
  37. * 總的記錄數$arrParameter['all']
  38. * 每頁顯示的記錄數$arrParameter['nums']
  39. * 頁面中顯示的連結數$arrParameter['links']
  40. * 待查詢的sql語句$arrParameter['sql']
  41. * 分頁條類型$arrParameter['tag']
  42. *
  43. int $intPage 目前頁碼值
  44. int $intNums 每頁顯示的記錄數
  45. int $intLinks 頁面中顯示的連結數
  46. string $strTablename 分頁顯示資料表
  47. resource $resLink 資料連線句柄
  48. array
  49. ***/🎝>*
  50. function calculateParamester($intPage,$intNums,$intLinks,$strTablename,$resLink){
  51. $intPage=(int)$intPage;
  52. $intNums=(int)$intNums; intLinks=(int)$intLinks;
  53. //顯示的連結數不是奇數時調整為奇數
  54. if($intLinks % 2 == 0){
  55. $intLinks--;
  56. }
  57. //每頁顯示的記錄數不大於0時調整為10
  58. if($intNums $intNums=10;
  59. }
  60. //計算總的頁數
  61. $strSql1="select count(*) as num from `{$strTablename}`";
  62. $resObj1=mysql_query($strSql1,$resLink); $arrObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fObj1=mysql_fOb ;
  63. $intAllRecords=$arrObj1['num'];
  64. $intAllPage=ceil($intAllRecords/$intNums);
  65. //sql語句limit關鍵字的第一個參數
  66. $intOffset =($intPage-1)*$intNums;
  67. //只顯示上一頁下一頁的情況即顯示的連結數不大於0
  68. if($intLinks $ strSql2="select * from `{$strTablename}` limit {$intOffset},{$intNums}";
  69. $arrParameter['start']=null;
  70. $arrParameter['end']=null;
  71. $arrParameter['page']=$intPage;
  72. $arrParameter['nums']=$intNums;
  73. $arrParameter['links']=null;
  74. $arrParameter['all' ]=$intAllPage;
  75. $arrParameter['sql']=$strSql2;
  76. $arrParameter['tag']=1;
  77. //顯示分頁條碼時的情況即顯示的連結數大於0
  78. }else{
  79. //當總的記錄大於0的情況
  80. if($intAllPage > 0){
  81. //確定目前頁碼的值
  82. if($intPage $intPage=1;
  83. }
  84. if($intPage >= $intAllPage){
  85. $intPage=$intAllPage;
  86. }
  87. $intHalfLinks=floorintAllPage;
  88. }
  89. $intHalfLinks=floorintAllPage;
  90. }
  91. $intHalfLinks=floorintAllPage;
  92. }
  93. $intHalfLinks=floorintAllPage;
  94. }
  95. $intHalfLinks=floorint($intLinks=floor /2);
  96. //計算開始頁碼的值
  97. $intStartPage=$intPage-$intHalfLinks;
  98. if($intStartPage $intStartPage=1;
  99. }
  100. if(($intAllPage-$intPage) //$intStartPage=$intPage-$intHalfLinks-($intHalfLinks-($intAllPage-$intPage)); //$🎜> //$ intStartPage=$intPage-$intHalfLinks-$intHalfLinks $intAllPage-$intPage;
  101. $intStartPage=$intAllPage-2*$intHalfLinks;
  102. }
  103. //計算結束頁碼的值
  104. $intEndPage= $intPage $intHalfLinks;
  105. if($intEndPage =$intLinks){
  106. $intEndPage=$intLinks;
  107. }
  108. if($intEndPage > $ $intEndPage=$intAllPage;
  109. }
  110. //建立待執行的sql語句
  111. $strSql2="select * from `{$strTablename}` limit {$intOffset},{$intNums}" ;
  112. $arrParameter['start']=$intStartPage;
  113. $arrParameter['end']=$intEndPage;
  114. $arrParameter['page']=$intPage;
  115. $arrParameter[' nums']=$intNums;
  116. $arrParameter['links']=$intLinks;
  117. $arrParameter['all']=$intAllPage;
  118. $arrParameter['sql']=$strSql2;
  119. $arrParameter['tag']=2;
  120. //當總的記錄等於0的情況
  121. }else{
  122. $arrParameter['start']=null;
  123. $arrParameter[ 'end']=null;
  124. $arrParameter['page']=null;
  125. $arrParameter['nums']=null;
  126. $arrParameter['links']=null;
  127. $ arrParameter['all']=null;
  128. $arrParameter['sql']=null;
  129. $arrParameter['tag']=3;
  130. }
  131. } return $arrParameter; }
  132. /**
  133. * 建立分頁條
  134. *
  135. * @param int $intPage 目前顯示的頁碼值
  136. * @param int $intStartPage 開始頁碼
  137. * @param int $intEndPage 結束頁碼
  138. * @param int $intAllRecords 總的記錄數
  139. * @param int $intTag 分頁條類型標記
  140. * @return string
  141. **/
  142. function createPagingItem($intPage,$intStartPage,$intEndPage,$intAllPage,$intTag){
  143. $strPageItem='';
  144. //只顯示上上。一頁下一頁的情況即顯示的連結數不大於0
  145. if($intTag == 1){
  146. if($intAllPage $strPageItem.='首頁  尾頁';
  147. }else{
  148. if($intPage == 1){
  149. $strPageItem.="首頁  上一頁";
  150. $strPageItem.="  ";
  151. }else{
  152. $strPageItem.="首頁";
  153. $strPageItem.="  ";
  154. $strPageItem.="上一頁";
  155. $strPageItem.="  ";
  156. }
  157. if($intPage == $intAllPage){
  158. $strPageItem.="下一頁  尾頁";
  159. }else{
  160. $strPageItem.="下一頁頁";
  161. $strPageItem.="  ";
  162. $strPageItem.="尾頁" ;
  163. }
  164. }
  165. }
  166. //顯示分頁條碼時的情況即顯示的連結數大於0
  167. if($intTag == 2){
  168. if($intPage == 1){
  169. $strPageItem.="首頁  上一頁";
  170. $strPageItem.="  ";
  171. }else{
  172. $strPageItem.="首頁";
  173. $strPageItem.="  ";
  174. $strPageItem.="上一頁";
  175. $strPageItem.="  ";
  176. }
  177. for($i=$intStartPage;$i if($ i == $intPage){
  178. $strPageItem.=$i;
  179. }else{
  180. $strPageItem.="[".$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.='首頁  尾頁';
  195. }
  196. return $strPageItem;
  197. }
  198. /**
  199. * 取得並輸出資料
  200. *
  201. * @param string $strSql 查詢的sql語句
  202. * @param array $arrFields 需要顯示的欄位所組成的一個陣列
  203. * @param resource $resLink 資料連接句柄
  204. * @return string
  205. **/
  206. function outPutData($strSql,$arrFields,$resLink){
  207. $resObj=mysql_query($strSql,$resLink);
  208. $arrObj= array();
  209. $strOutPutData='';
  210. $arrFieldsCode=array_keys($arrFields);
  211. while(@$arrRow=mysql_fetch_assoc($resObj)){
  212. $arr🎜[ arrRow;
  213. }
  214. $strOutPutData.="";
  215. $strOutPutData.='
  216. ';
  217. foreach($arrFieldsCode as $strVal){
  218. $strOutPutData.="
  219. ";
  220. }
  221. $strOutPutData.="
  222. ";
  223. foreach($arrObj as $arrVal){
  224. $strOutPutData.="
  225. ";
  226. foreach($arrFieldsCode as $strVal){
  227. $strOutPutData.="
  228. ";
  229. }
  230. $strOutPutData.="
  231. ";
  232. }
  233. $strOutPutData.="
  234. ".$arrFields[trim($strVal)]."
    ".$arrVal[ trim($strVal)]."
    ";
  235. return $strOutPutData;
  236. }
  237. // 連線並選擇資料庫
  238. // 注意:你應該修改資料庫帳號和密碼以及資料庫名稱
  239. $resLink=mysqlConnect('localhost','root','root','ztlibrary') ;
  240. // 求分頁參數注意:你應該修改資料表名稱
  241. $arrParameter=calculateParamester(@$_GET['page']?$_GET['page']:1,
  242. 10, 5,'book_info',$resLink);
  243. //待顯示的數據,由表的字段名為其鍵值,字段名的中文解釋為其元素值
  244. //注意:你應該根據你的資料表修改下面這個陣列
  245. $arrFields=array('Id_code'=>'圖書編碼', 'Book_name'=>'圖書名稱',
  246. 'Book_ISBN'=>'ISBN','Contribute_man' =>'來源','Issue_time'=>'出版時間','Storing_time'=>'入庫時間');
  247. ?>
  248. li>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  249. php分頁示範--www.yuju100.com
  250. //輸出分頁資料
  251. echo outPutData($arrParameter['sql'],$arrFields,$resLink);
  252. ?>
  • //顯示分頁條
  • echo createPagingItem($arrParameter['page'],$arrParameter['start'],$arrParameter['end'],
  • $arrParameter['all'],$arrParameter['tag']);
  • ?>
  • 複製程式碼

    陳述:
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn