PHP 中的图像库分页,显示文件夹中的所有图像

问题描述 投票:0回答:1

我正在尝试向我完全用 PHP 制作的图片库添加分页。

我使用了这篇文章,因为它是我发现的最合适的。
然而,浏览了一下我发现它总体上不起作用。

例如,我有一个包含 206 个文件的文件夹,在 11 页(每页 18 个)内仅显示 196 个图像。
我还有另一个有 35 个文件的文件,它没有超过第一页,所以有 18 张图片。

这是代码,我哪里出错了?
请说得像我很蠢一样,因为我所做的这一切都是我凭空想象出来的,之前没有学习过 PHP,也没有任何 PHP 知识。谢谢

<div>
<?php
$folder = './././';
$filetype = '*.jpg*';    
$files = glob($folder.$filetype);
$total = count($files);    
$per_page = 18;    
$last_page = (int)($total / $per_page);    
if(isset($_GET["page"])  && ($_GET["page"] <=$last_page) && ($_GET["page"] > 0) ){
    $page = $_GET["page"];
    $offset = ($per_page + 1)*($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).'"> &lt;&lt;Previous Page</a></span>&nbsp;';
    }
    if( $current_page < $last_page ){
        echo '<span class="button-14"><a href="?page='.($current_page+1).'"> Next Page&gt;&gt;</a></span>';  
    }
    echo '</div>';
}?>
php pagination gallery
1个回答
0
投票

$last_page
偏离了 1。考虑一下你在这里做什么:

$last_page = (int)($total / $per_page);

如果该计算有任何余数,则转换为

int
将删除该余数。所以最后一页不完整的记录永远不可用。

不要转换为

int
,而是使用
ceil()
函数
:

$last_page = ceil($total / $per_page);

这样,如果有任何余数,即使只是一条额外记录,

$last_page
也将始终将 向上 舍入以解决该余数。

© www.soinside.com 2019 - 2024. All rights reserved.