ホームページ  >  記事  >  バックエンド開発  >  ページめくりリンク (ページ番号) のリストを生成する PHP 関数

ページめくりリンク (ページ番号) のリストを生成する PHP 関数

WBOY
WBOYオリジナル
2016-07-25 09:00:371049ブラウズ
  1. /**
  2. * ページ番号リストを生成
  3. *
  4. * @param int $element_total_count 総要素数
  5. * @param int $current_page 現在のページ
  6. * @param int $per_page_elem_count ページごとの要素数
  7. * @param int $show_page_num ページ数リストに表示される番号
  8. * @param string $up_down_class ページアップとダウンのスタイル
  9. * @param string $num_class 現在のページ番号の数値スタイル
  10. * @param string $href ページリンク
  11. * @param string $page_symbol リンクパラメータの受け渡しページ番号
  12. * @return string
  13. */
  14. function get_page_link_list($element_total_count,$current_page=1,$per_page_elem_count=10,$show_page_num=10,$up_down_class,$num_class,$href,$ page_symbol='p')
  15. {
  16. if(empty($href))
  17. {
  18. //自動取得剔除页码パラメータの页面链接
  19. $page_name =basename($_SERVER['PHP_SELF']);
  20. $params = $_SERVER['QUERY_STRING'];
  21. $params_str = '';
  22. if(!empty($params))
  23. {
  24. $params = str_replace('&', '&', $params);
  25. $params_array =explode('&', $params);
  26. foreach($params_array as $param)
  27. {
  28. if(!empty($param))
  29. {
  30. $index = strpos($param, '=');
  31. if($index)
  32. {
  33. $key = substr($param, 0, $index);
  34. if($key && $key != $page_symbol)
  35. $params_str .= $param . '&';
  36. }
  37. }
  38. }
  39. }
  40. if(!empty($params_str))
  41. $href = $page_name 。 「?」 。 $params_str;
  42. else
  43. $href = $page_name;
  44. $href = rtrim($href,'&'); $prefix = strpos($href,"?") ? "&" : "?";
  45. $prefix .= $page_symbol;
  46. $page_total_count = ceil($element_total_count/$per_page_elem_count);
  47. if(intval($element_total_count)<1 || !isset($element_total_count))
  48. {
  49. return '';
  50. }
  51. if($element_total_count <= $per_page_elem_count)
  52. return '';
  53. if($current_page>$page_total_count)
  54. $current_page = 1;
  55. if(strpos($href,"#"))
  56. {
  57. $label = substr($href,strpos($href,"#"));
  58. $href = substr($href,0,strpos($href,"#"));
  59. }
  60. /* 页码の生成 */
  61. if($current_page > ceil($show_page_num/2))
  62. {
  63. $start = $current_page - ceil($show_page_num/2);
  64. $end = (($current_page+ceil($show_page_num/2)) $current_page+ceil($show_page_num/2)-1 : $page_total_count;
  65. }
  66. else
  67. {
  68. $start = 1;
  69. $end = ($show_page_num>$page_total_count) ? $page_total_count : $show_page_num;
  70. }
  71. if(!empty($num_class))
  72. $num_class_str = ' class="'.$num_class.'"';
  73. else
  74. $num_class_str = '';
  75. $page_num_string = '';
  76. for($i=$start;$i<=$end;$i++)
  77. {
  78. if(intval($i) == intval($current_page))
  79. $page_num_string .= ''.$i.'';
  80. else
  81. $page_num_string .= ''.$i.'';
  82. }
  83. /* 上下翻页 */
  84. $prev_page = (intval($current_page-1)>0)?intval($current_page-1):0;
  85. $next_page = (intval($current_page) if(!empty($up_down_class))
  86. $up_down_class_str = ' class="'.$up_down_class.'"';
  87. else
  88. $up_down_class_str = '';
  89. $page_up_string = '';
  90. if(intval($prev_page) > 0)
  91. $page_up_string = '上一页;
  92. else
  93. $page_up_string = '上一页';
  94. $page_down_string = '';
  95. if(intval($next_page) > 0)
  96. $page_down_string .= '下一页';
  97. else
  98. $page_down_string .= '下一页';
  99. /* 戻り結果 */
  100. return $page_up_string 。 $page_num_string 。 $page_down_string;
  101. }
  102. ?>
  103. 复制代


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