Blogger Information
Blog 9
fans 0
comment 0
visits 6867
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
分页功能中分页页码省略的两种情况 1、两端无页码 2、两端有页码
移动用户-1144300
Original
979 people have browsed it

分页功能

分页页码省略

两端无页码

  1. <?php
  2. // 分页条显示5个页码
  3. $showPages = 5;
  4. // 分页条的起始页码
  5. $startPage = 1;
  6. // 分页条的终止页码
  7. $endPage = $pages;
  8. // 分页条的偏移量 (当前分页条显示页码数-1)/2
  9. $offsetPage = ($showPages - 1) / 2;
  10. // 只有当前分页条数量 < 总页数,才有必要显示出省略标记
  11. if ($showPages < $pages) {
  12. // 如果当前页 > 偏移量 +1 ,应该显示...因为1之前根本没有数据所以要在偏移量后面加一
  13. if ($page > $offsetPage + 1) {
  14. $startOmit = '...';
  15. }
  16. // 将当前分页条码重置
  17. // 当前页大于偏移量(2)时 如第3页 左侧需要显示 ‘...’
  18. if ($page > $offsetPage) {
  19. $startPage = $page - $offsetPage;
  20. $endPage = $page + $offsetPage;
  21. // 当终止页码大于总页码时会不希望生成多余无内容的页码
  22. if ($endPage > $pages) {
  23. $endPage = $pages;
  24. // 因为大于总页码的部分相当于被删掉了所以显示的的页面就少了
  25. // 这时需要向前前面借少掉的部分
  26. // 即:新起始页 = 当前起始页 - (当前页 + 加偏移量 -总页数)
  27. // 注意:这里不能写($endPage - $pages)因为这里的$endPage = $pages
  28. $startPage = $startPage - ($page + $offsetPage - $pages);
  29. }
  30. } else {
  31. // 当前页如 1 小于偏移量(2)时 需要设置显示数量
  32. $startPage = 1;
  33. $endPage = $showPages;
  34. }
  35. // if ($page + $offsetPage > $pages) {
  36. // 拿到上面去了
  37. // $startPage = $startPage - ($page + $offsetPage - $pages);
  38. // }
  39. // 当终止页小于总页数时才有必要在右侧显示‘...’
  40. if ($endPage < $pages) {
  41. // 注意:不能用$startOmit因为显示的原理是存不存在只要当前页大于偏移量就会出现
  42. // 所以不行 尾页附近都是远远大于偏移量的
  43. $endOmit = '...';
  44. }
  45. }
  46. ?>
  47. <!-- 这样写有问题到了第1页在减1会跑到第零页但是没有第零页所以要做个判断 -->
  48. <!-- 想要达到:第一页时将上一页和首页隐藏掉 只需写css 代码display = none;不让加载就行 -->
  49. <!-- 详情看f4.php -->
  50. <!-- 首页 -->
  51. <!-- 这里不用写查询字符串?p=1 因为默认当前脚本名称就是首页 当然加上也正确-->
  52. <a href="<?php echo $_SERVER['PHP_SELF']; ?>">首页</a>
  53. <!-- <a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $page; ?>">首页</a> -->
  54. <!-- 上一页 -->
  55. <?php
  56. $prve = ($page == 1) ? 1 : $page - 1;
  57. ?>
  58. <!-- 这样写有问题到了第1页在减1会跑到第零页但是没有第零页所以要做个判断 -->
  59. <a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $prve; ?>">上一页</a>
  60. <?php if (isset($startOmit)) : ?>
  61. <!-- 加一个#号点击后不会跳转只会在url地址栏里加一个# -->
  62. <a href="#"><?php echo $startOmit; ?></a>
  63. <?php endif; ?>
  64. <?php for ($i = $startPage; $i <= $endPage; $i++) : ?>
  65. <?php
  66. $jump = sprintf('%s?p=%s', $_SERVER['PHP_SELF'], $i);
  67. // 两组都可以
  68. // 注意不要写$_GET['p']因为它可能不存在所以要写$page 它要么是$_GET['p']要么是 1
  69. $active = ($i == $page) ? 'active' : null;
  70. // if ($i == $page) {
  71. // $active = 'active';
  72. // } else {
  73. // $active = null;
  74. // }
  75. ?>
  76. <a href="<?php echo $jump ?>" class="<?php echo $active ?>"><?php echo $i ?></a>
  77. <!-- 当我们的php代码只有一行时可以省略分号 -->
  78. <?php endfor ?>
  79. <?php
  80. $next = ($page == $pages) ? $pages : $page + 1;
  81. ?>
  82. // <!-- 这样写有问题到了第1页在减1会跑到第零页但是没有第零页所以要做个判断 -->
  83. // <!-- 想要达到:最后一页时将下一页和尾页隐藏掉 只需写css 代码display = none;不让加载就行 -->
  84. // <!-- 详情看f4.php -->
  85. <!-- <?php if (isset($startOmit)) : ?>
  86. <a href="#"><?php echo $startOmit; ?></a>
  87. <?php endif; ?> -->
  88. <?php if (isset($endOmit)) : ?>
  89. <a href="#"><?php echo $endOmit; ?></a>
  90. <?php endif; ?>
  91. <a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $next; ?>">下一页</?>
  92. <a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $pages; ?>">尾页</a>
  93. </p>

两端有页码

  1. <?php
  2. // 分页条显示5个页码
  3. $showPages = 5;
  4. // 分页条的起始页码
  5. $startPage = 2;
  6. // 分页条的终止页码
  7. $endPage = $pages;
  8. // 分页条的偏移量 (当前分页条显示页码数-1)/2
  9. $offsetPage = ($showPages - 1) / 2;
  10. // 只有当前分页条数量 < 总页数,才有必要显示出省略标记
  11. if ($showPages < $pages) {
  12. // 如果当前页 > 偏移量 +1 ,应该显示...因为1之前根本没有数据所以要在偏移量后面加一
  13. if ($page > $offsetPage + 1) {
  14. $startOmit = '...';
  15. }
  16. // 将当前分页条码重置
  17. // 当前页大于偏移量(2)时 如第3页 左侧需要显示 ‘...’
  18. // 因为我将1放到了外面所以显示的要整体往后移动一位
  19. if ($page > $offsetPage + 1) {
  20. $startPage = $page - $offsetPage + 1;
  21. $endPage = $page + $offsetPage + 1;
  22. // 当终止页码大于总页码时会不希望生成多余无内容的页码
  23. if ($endPage > $pages - 1) {
  24. $endPage = $pages - 1;
  25. // 因为大于总页码的部分相当于被删掉了所以显示的的页面就少了
  26. // 这时需要向前前面借少掉的部分
  27. // 即:新起始页 = 当前起始页 - (当前页 + 加偏移量 -总页数)
  28. // 注意:这里不能写($endPage - $pages)因为这里的$endPage = $pages
  29. $startPage = $startPage - ($page + $offsetPage - ($pages - 1));
  30. }
  31. // 有问题
  32. // if ($endPage >= $pages) {
  33. // $endPage = $pages;
  34. // } else {
  35. // $endPage = $page + $offsetPage;
  36. // }
  37. } else {
  38. // 当前页如 1 小于偏移量(2)时 需要设置显示数量
  39. $startPage = 2;
  40. $endPage = $showPages;
  41. }
  42. // if ($page + $offsetPage > $pages) {
  43. // 拿到上面去了
  44. // $startPage = $startPage - ($page + $offsetPage - $pages);
  45. // }
  46. // 当终止页小于总页数时才有必要在右侧显示‘...’
  47. if ($endPage < $pages - 1) {
  48. // 注意:不能用$startOmit因为显示的原理是存不存在只要当前页大于偏移量就会出现
  49. // 所以不行 尾页附近都是远远大于偏移量的
  50. $endOmit = '...';
  51. }
  52. }
  53. ?>
  54. <!-- 这样写有问题到了第1页在减1会跑到第零页但是没有第零页所以要做个判断 -->
  55. <!-- 想要达到:第一页时将上一页和首页隐藏掉 只需写css 代码display = none;不让加载就行 -->
  56. <!-- 详情看f4.php -->
  57. <!-- 首页 -->
  58. <!-- 这里不用写查询字符串?p=1 因为默认当前脚本名称就是首页 当然加上也正确-->
  59. <a href="<?php echo $_SERVER['PHP_SELF']; ?>">首页</a>
  60. <!-- <a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $page; ?>">首页</a> -->
  61. <!-- 上一页 -->
  62. <?php
  63. $prve = ($page == 1) ? 1 : $page - 1;
  64. ?>
  65. <!-- 这样写有问题到了第1页在减1会跑到第零页但是没有第零页所以要做个判断 -->
  66. <a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $prve; ?>">上一页</a>
  67. <!-- 这里照抄首页就行 -->
  68. <?php
  69. if ($page == 1) {
  70. $active = 'active';
  71. } else {
  72. $active = null;
  73. }
  74. ?>
  75. <a href="<?php echo $_SERVER['PHP_SELF'] . '?p=1'; ?>" class="<?php echo $active ?>">1</a>
  76. <?php if (isset($startOmit)) : ?>
  77. <!-- 加一个#号点击后不会跳转只会在url地址栏里加一个# -->
  78. <a href=" #"><?php echo $startOmit; ?></a>
  79. <?php endif; ?>
  80. <?php for ($i = $startPage; $i <= $endPage; $i++) : ?>
  81. <?php
  82. $jump = sprintf('%s?p=%s', $_SERVER['PHP_SELF'], $i);
  83. // 两组都可以
  84. // 注意不要写$_GET['p']因为它可能不存在所以要写$page 它要么是$_GET['p']要么是 1
  85. $active = ($i == $page) ? 'active' : null;
  86. // if ($i == $page) {
  87. // $active = 'active';
  88. // } else {
  89. // $active = null;
  90. // }
  91. ?>
  92. <a href="<?php echo $jump ?>" class="<?php echo $active ?>"><?php echo $i ?></a>
  93. <!-- 当我们的php代码只有一行时可以省略分号 -->
  94. <?php endfor ?>
  95. <?php
  96. $next = ($page == $pages) ? $pages : $page + 1;
  97. ?>
  98. <!-- 这样写有问题到了第1页在减1会跑到第零页但是没有第零页所以要做个判断 -->
  99. <!-- 想要达到:最后一页时将下一页和尾页隐藏掉 只需写css 代码display = none;不让加载就行 -->
  100. <!-- 详情看f4.php -->
  101. <!-- <?php if (isset($startOmit)) : ?>
  102. <a href="#"><?php echo $startOmit; ?></a>
  103. <?php endif; ?> -->
  104. <?php if (isset($endOmit)) : ?>
  105. <a href="#"><?php echo $endOmit; ?></a>
  106. <?php endif; ?>
  107. <?php
  108. if ($page == $pages) {
  109. $active = 'active';
  110. } else {
  111. $active = null;
  112. }
  113. ?>
  114. <a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $pages; ?>" class="<?php echo $active ?>"><?php echo $pages; ?></a>
  115. <a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $next; ?>">下一页</?>
  116. <a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $pages; ?>">尾页</a>
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:现在知道了吧, 一个看起来非常简单的分页, 其实一点也不简单, 里面的门道好深
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post