我正在尝试向我完全用 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).'"> <<Previous Page</a></span> ';
}
if( $current_page < $last_page ){
echo '<span class="button-14"><a href="?page='.($current_page+1).'"> Next Page>></a></span>';
}
echo '</div>';
}?>
$last_page
偏离了 1。考虑一下你在这里做什么:
$last_page = (int)($total / $per_page);
如果该计算有任何余数,则转换为
int
将删除该余数。所以最后一页不完整的记录永远不可用。
不要转换为
int
,而是使用 ceil()
函数:
$last_page = ceil($total / $per_page);
这样,如果有任何余数,即使只是一条额外记录,
$last_page
也将始终将 向上 舍入以解决该余数。