PHP分页页码过多,如何修改代码限制分页栏显示页码数?
优化PHP分页显示:限制页码数量并添加省略号
我明白你的问题——当数据量很大时,全量显示所有页码会让分页栏变得冗长且不友好。我们可以通过添加逻辑来限制显示的页码数量,只展示当前页附近的页码、首尾页,并用省略号代替中间的冗余页码。
下面是修改后的分页链接代码,完全适配你现有的业务逻辑:
<?php $result_db = mysqli_query($conn,"SELECT COUNT(id) FROM acxhuzur_dernek.video"); $row_db = mysqli_fetch_row($result_db); $total_records = $row_db[0]; $total_pages = ceil($total_records / $limit); $adjacent = 2; // 可调整:控制当前页前后显示的页码数量 $pagLink .= ' <div class="col-12 margin-100px-top md-margin-50px-top wow" style="visibility: visible; animation-name: fadeInUp;"> <div class="pagination text-small text-uppercase text-extra-dark-gray text-center"> <ul class="mx-auto">'; // 上一页按钮逻辑 if ($page > 1) { $pagLink .= '<li><a href="gallery_video?page='.($page-1).'">Prev</a></li>'; } else { $pagLink .= '<li class="disabled"><span>Prev</span></li>'; } // 核心页码显示逻辑 if ($total_pages <= ($adjacent * 2 + 3)) { // 总页数较少时,直接显示所有页码 for ($i=1; $i<=$total_pages; $i++) { $activeClass = ($page == $i) ? 'class="active"' : ''; $pagLink .= '<li '.$activeClass.'><a href="gallery_video?page='.$i.'">'.$i.'</a></li>'; } } else { // 固定显示第一页 $pagLink .= '<li><a href="gallery_video?page=1">1</a></li>'; // 当前页离第一页较远时,显示省略号 if ($page - $adjacent > 2) { $pagLink .= '<li class="disabled"><span>..</span></li>'; } // 显示当前页前后的相邻页码 $startPage = max(2, $page - $adjacent); $endPage = min($total_pages - 1, $page + $adjacent); for ($i=$startPage; $i<=$endPage; $i++) { $activeClass = ($page == $i) ? 'class="active"' : ''; $pagLink .= '<li '.$activeClass.'><a href="gallery_video?page='.$i.'">'.$i.'</a></li>'; } // 当前页离最后一页较远时,显示省略号 if ($page + $adjacent < $total_pages - 1) { $pagLink .= '<li class="disabled"><span>..</span></li>'; } // 固定显示最后一页 $pagLink .= '<li><a href="gallery_video?page='.$total_pages.'">'.$total_pages.'</a></li>'; } // 下一页按钮逻辑 if ($page < $total_pages) { $pagLink .= '<li><a href="gallery_video?page='.($page+1).'">Next</a></li>'; } else { $pagLink .= '<li class="disabled"><span>Next</span></li>'; } echo $pagLink . '</ul></div></div>'; ?>
关键逻辑说明
$adjacent = 2:这个变量决定了当前页前后各显示多少个页码,你可以根据需求调整数值(比如改成1,就只显示当前页前后1个页码)。- 禁用状态处理:当处于第一页时,"Prev"按钮会添加
disabled类并变成不可点击的文本;处于最后一页时,"Next"按钮同理,提升用户体验。 - 分页场景适配:
- 总页数较少时(比如少于7页),直接显示所有页码,避免多余的省略号。
- 总页数较多时,固定显示首尾页,用省略号代替中间的大量页码,只保留当前页附近的可点击页码,让分页栏保持简洁。
内容的提问来源于stack exchange,提问作者Walid
相关产品推荐
相关产品推荐

