Рассчитать нумерацию страниц, если не всю первую страницу - PullRequest
0 голосов
/ 01 июля 2019

Создал галерею с нумерацией страниц и сделал так, чтобы на первой странице было только 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;?>">&larr; First</a>
      <a href="?page=<?php echo ($page - 1);?>">&larr; 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 &rarr;</a>
      <a href="?page=<?php echo $total_pages;?>">Last &rarr;</a>
      <?php } ?>
</div>
</body>
</html>```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...