博客列表 >分页功能中分页页码省略的两种情况 1、两端无页码 2、两端有页码

分页功能中分页页码省略的两种情况 1、两端无页码 2、两端有页码

移动用户-1144300
移动用户-1144300原创
2020年05月15日 22:41:45841浏览

分页功能

分页页码省略

两端无页码

  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>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议