php分頁原理與php分頁代碼綜合執行個體

來源:互聯網
上載者:User
  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 分頁顯示資料表
  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語句limit關鍵字的第一個參數
  72. $intOffset=($intPage-1)*$intNums;
  73. //只顯示上一頁下一頁的情況即顯示的連結數不大於0
  74. if($intLinks <= 0){
  75. $strSql2="select * from `{$strTablename}` limit {$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. //顯示分頁條碼時的情況即顯示的連結數大於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 <= 0){
  99. $intStartPage=1;
  100. }
  101. if(($intAllPage-$intPage) < $intHalfLinks){
  102. //$intStartPage=$intPage-$intHalfLinks-($intHalfLinks-($intAllPage-$intPage));
  103. //$intStartPage=$intPage-$intHalfLinks-$intHalfLinks+$intAllPage-$intPage;
  104. $intStartPage=$intAllPage-2*$intHalfLinks;
  105. }
  106. //計算結束頁碼的值
  107. $intEndPage=$intPage+$intHalfLinks;
  108. if($intEndPage < $intLinks && $intAllPage >=$intLinks){
  109. $intEndPage=$intLinks;
  110. }
  111. if($intEndPage > $intAllPage){
  112. $intEndPage=$intAllPage;
  113. }
  114. //建立待執行的sql語句
  115. $strSql2="select * from `{$strTablename}` limit {$intOffset},{$intNums}";
  116. $arrParameter['start']=$intStartPage;
  117. $arrParameter['end']=$intEndPage;
  118. $arrParameter['page']=$intPage;
  119. $arrParameter['nums']=$intNums;
  120. $arrParameter['links']=$intLinks;
  121. $arrParameter['all']=$intAllPage;
  122. $arrParameter['sql']=$strSql2;
  123. $arrParameter['tag']=2;
  124. //當總的記錄等於0的情況
  125. }else{
  126. $arrParameter['start']=null;
  127. $arrParameter['end']=null;
  128. $arrParameter['page']=null;
  129. $arrParameter['nums']=null;
  130. $arrParameter['links']=null;
  131. $arrParameter['all']=null;
  132. $arrParameter['sql']=null;
  133. $arrParameter['tag']=3;
  134. }
  135. }
  136. return $arrParameter;
  137. }
  138. /**
  139. * 建立分頁條
  140. *
  141. * @param int $intPage 當前顯示的頁碼值
  142. * @param int $intStartPage 開始頁碼
  143. * @param int $intEndPage 結束頁碼
  144. * @param int $intAllRecords 總的記錄數
  145. * @param int $intTag 分頁條類型標記
  146. * @return string
  147. * */
  148. function createPagingItem($intPage,$intStartPage,$intEndPage,$intAllPage,$intTag){
  149. $strPageItem='';
  150. //只顯示上一頁下一頁的情況即顯示的連結數不大於0
  151. if($intTag == 1){
  152. if($intAllPage <= 0){
  153. $strPageItem.='首頁 尾頁';
  154. }else{
  155. if($intPage == 1){
  156. $strPageItem.="首頁 上一頁";
  157. $strPageItem.=" ";
  158. }else{
  159. $strPageItem.="首頁";
  160. $strPageItem.=" ";
  161. $strPageItem.="上一頁";
  162. $strPageItem.=" ";
  163. }
  164. if($intPage == $intAllPage){
  165. $strPageItem.="下一頁 尾頁";
  166. }else{
  167. $strPageItem.="下一頁";
  168. $strPageItem.=" ";
  169. $strPageItem.="尾頁";
  170. }
  171. }
  172. }
  173. //顯示分頁條碼時的情況即顯示的連結數大於0
  174. if($intTag == 2){
  175. if($intPage == 1){
  176. $strPageItem.="首頁 上一頁";
  177. $strPageItem.=" ";
  178. }else{
  179. $strPageItem.="首頁";
  180. $strPageItem.=" ";
  181. $strPageItem.="上一頁";
  182. $strPageItem.=" ";
  183. }
  184. for($i=$intStartPage;$i<=$intEndPage;$i++){
  185. if($i == $intPage){
  186. $strPageItem.=$i;
  187. }else{
  188. $strPageItem.="[".$i."]";
  189. }
  190. $strPageItem.=" ";
  191. }
  192. if($intPage == $intAllPage){
  193. $strPageItem.="下一頁 尾頁";
  194. }else{
  195. $strPageItem.="下一頁";
  196. $strPageItem.=" ";
  197. $strPageItem.="尾頁";
  198. }
  199. }
  200. //當總的記錄等於0的情況
  201. if($intTag == 3){
  202. $strPageItem.='首頁 尾頁';
  203. }
  204. return $strPageItem;
  205. }
  206. /**
  207. * 擷取並輸出資料
  208. *
  209. * @param string $strSql 查詢的sql語句
  210. * @param array $arrFields 需要顯示的欄位所組成的一個數組
  211. * @param resource $resLink 資料連線控制代碼
  212. * @return string
  213. * */
  214. function outPutData($strSql,$arrFields,$resLink){
  215. $resObj=mysql_query($strSql,$resLink);
  216. $arrObj=array();
  217. $strOutPutData='';
  218. $arrFieldsCode=array_keys($arrFields);
  219. while(@$arrRow=mysql_fetch_assoc($resObj)){
  220. $arrObj[]=$arrRow;
  221. }
  222. $strOutPutData.="
  223. $strOutPutData.='
  224. foreach($arrFieldsCode as $strVal){
  225. }
  226. foreach($arrObj as $arrVal){
  227. foreach($arrFieldsCode as $strVal){
  228. }
  229. }
  230. "; ';
  231. $strOutPutData.="
  232. ";
  233. $strOutPutData.="
  234. ";
  235. $strOutPutData.="
  236. ";
  237. $strOutPutData.="
  238. ";
  239. $strOutPutData.="
  240. ";
  241. $strOutPutData.="
  242. ".$arrFields[trim($strVal)]."
    ".$arrVal[trim($strVal)]."
    ";
  243. return $strOutPutData;
  244. }
  245. // 串連並選擇資料庫
  246. // 注意:你應該修改資料庫帳號和密碼以及資料庫名稱
  247. $resLink=mysqlConnect('localhost','root','root','ztlibrary');
  248. // 求出分頁參數 注意:你應該修改資料表名稱
  249. $arrParameter=calculateParamester(@$_GET['page']?$_GET['page']:1,
  250. 10,5,'book_info',$resLink);
  251. //待顯示的資料,由表的欄位名為其索引值,欄位名的中文解釋為其元素值
  252. //注意:你應該根據你的資料表修改下面這個數組
  253. $arrFields=array('Id_code'=>'圖書編碼', 'Book_name'=>'圖書名稱',
  254. 'Book_ISBN'=>'ISBN','Contribute_man'=>'來源','Issue_time'=>'出版時間','Storing_time'=>'入庫時間');
  255. ?>
  256. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  257. php分頁示範--www.yuju100.com
  258. //輸出分頁資料
  259. echo outPutData($arrParameter['sql'],$arrFields,$resLink);
  260. ?>
  261. //顯示分頁條
  262. echo createPagingItem($arrParameter['page'],$arrParameter['start'],$arrParameter['end'],
  263. $arrParameter['all'],$arrParameter['tag']);
  264. ?>
複製代碼
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.