Я знаю, что это тема уже обсуждалась, но всё равно не знаю, как это сделать. Пытаюсь реализовать галерею по примеру выше, чтобы на первой странице было всего две картинки, а на каждой последующей по четыре, и столкнулся с такой проблемой, что последняя страница не появляется до тех пор, пока на ней не будет больше двух картинок. Видимо, проблема со смещением картинки. Просто если $xpp поставить 0, то работает как надо. Как сделать правильно расчет, чтобы последняя страница появлялась сразу, если в неё попадёт хотя бы одна картинка?
Я знаю, что это тема уже обсуждалась, но всё равно не знаю, как это сделать. Пытаюсь реализовать галерею по примеру выше, чтобы на первой странице было всего две картинки, а на каждой последующей по четыре, и столкнулся с такой проблемой, что последняя страница не появляется до тех пор, пока на ней не будет больше двух картинок. Видимо, проблема со смещением картинки. Просто если $xpp поставить 0, то работает как надо. Как сделать правильно расчет, чтобы последняя страница появлялась сразу, если в неё попадёт хотя бы одна картинка?
Вот код:
<?php $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; $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>Да, в первом комментарии, касающемся $xpp, я не все упомянул. Посмотрите этот комментарий и следующий за ним с моим ответом.
Для ceil попробуйте сделать так (только $xpp определите до этой команды):