Создал галерею с нумерацией страниц и сделал так, чтобы на первой странице было только 2 картинки, а на каждой последующей - 4 картинки. Это всего лишь пример. Новые изображения появляются автоматически, когда они добавляются в папку. Проблема в том, что навигация по страницам отображается не сразу, а только при наличии более двух страниц на последней странице. Я думаю, это как-то связано с тем, что я удалил 2 картинки с первой страницы. Для этих целей используется переменная $ xpp = 2;. Как правильно сделать расчет, когда на предпоследней странице достигнут лимит $ per_page = 4; и чтобы сразу появилась следующая страница?
$galleryDir = opendir("gallery");
$restricted = array(".","..","thumbs","index.html","Thumbs.db");
while(false !== ($filename = readdir($galleryDir))){
if(!in_array($filename, $restricted))
$files_array[] = $filename;
}
$count = 0;
$per_page = 4;
$total_pages = ceil(count($files_array)/$per_page);
$page = (isset($_GET['page']))?(int)$_GET['page'] : 1;
//if($page < 1 || $page > $total_pages) $page = 1;
$xpp = 2;
$limit = $per_page - ($page<2)*$xpp;
$start = ($page - 1) * $per_page - ($page>1)*$xpp;
?>
<!DOCTYPE html>
<html>
<head>
<title>Loop Files in PHP</title>
</head>
<body>
<h3>Viewing page <?php echo $page; ?> of <?php echo $total_pages; ?></h3>
<div class="gallery-holder">
<?php for($i = $start; $i < count($files_array); $i++){$count++;?>
<a href="gallery/<?php echo $files_array[$i];?>">
<img src="gallery/<?php echo $files_array[$i];?>">
</a>
<?php
if($limit==$count)break;}
?>
</div>
<div class="nav" style="text-align:center;">
<?php if($page>1){?>
<a href="?page=<?php echo 1;?>">← First</a>
<a href="?page=<?php echo ($page - 1);?>">← Prev</a>
<?php }
for($i=1;$i<=$total_pages; $i++)
{
?>
<a href="?page=<?php echo $i;?>"><?php echo $i;?></a>
<?php
}
?>
<?php if($total_pages > $page) { ?>
<a href="?page=<?php echo ($page + 1); ?>">Next →</a>
<a href="?page=<?php echo $total_pages;?>">Last →</a>
<?php } ?>
</div>
</body>
</html>```