You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP图片画廊分页异常:无法显示文件夹内全部图片

图片画廊分页功能的问题排查与修复

问题现象

  • 206张图片按每页18张分页,实际只显示11页共196张,少了10张
  • 35张图片的文件夹仅显示前18张,无“下一页”按钮,无法查看剩余图片

核心错误点

1. 最后一页数量计算错误

你用(int)($total / $per_page)计算总页数,这种写法会直接砍掉小数部分:

  • 比如35张图片,35÷18≈1.94,转成整数后变成1页,但实际需要2页才能装下所有图片
  • 这导致分页按钮的判断条件$current_page < $last_page不成立(第1页时1<1为假),所以不会显示“下一页”按钮,没法翻页看剩下的内容

2. 每页起始位置计算错误

你写的$offset = ($per_page + 1)*($page - 1)多算了1个位置:

  • 正常第2页应该从第18张(数组索引18,因为数组从0开始计数)开始,但你的公式算出来是19,等于每页都跳过了1张图片
  • 11页下来就少了10张,最后一页的起始位置也错了,导致显示的图片总数不对

修复后的完整代码

<div>
<?php
$folder = './././';
$filetype = '*.jpg*';    
$files = glob($folder.$filetype);
$total = count($files);    
$per_page = 18;    
// 修复:用ceil向上取整计算总页数,确保所有图片都能分到页
$last_page = ceil($total / $per_page);    
if(isset($_GET["page"])  && ($_GET["page"] <=$last_page) && ($_GET["page"] > 0) ){
    $page = $_GET["page"];
    // 修复:去掉+1,正确计算每页起始索引
    $offset = $per_page * ($page - 1);      
}else{
    $page=1;
    $offset=0;      
}    
$max = $offset + $per_page;    
if($max>$total){
    $max = $total;
}
    
for ($i = $offset; $i< $max; $i++) {
    $image = $files[$i];
    $info = pathinfo($image);
    $resolution = getimagesize($image);
        $file = $files[$i];
        $path_parts = pathinfo($file);
        $filename = $path_parts['filename'];
        echo '<div class="thumbs">';
        echo '<a target="_blank" href="'.$file.'"><img src="'.$image.'"></a><br>';
        echo '<span class="thumb_size">' . strval($resolution[0]) . 'x' . strval($resolution[1]) . '</span>';
        echo '</div>';
}   
show_pagination($page, $last_page); 
    
?>
</div>
<?php function show_pagination($current_page, $last_page){
    echo '<div class="pagination">';
    if( $current_page > 1 ){
        echo '<span class="button-14"><a href="?page='.($current_page-1).'"> <<Previous Page</a></span>&nbsp;';
    }
    if( $current_page < $last_page ){
        echo '<span class="button-14"><a href="?page='.($current_page+1).'"> Next Page>></a></span>';  
    }
    echo '</div>';
}?>

内容的提问来源于stack exchange,提问作者user23556208

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 12:04:59