От автора: в этом уроке мы продолжим изменять код галереи для того, чтобы она использовала в своей работе базу данных. В частности, мы сделаем небольшие правки в коде, в результате которых наша галерея начнет свою работу, правда, пока что с перезагрузкой страницы при клике по ссылкам пагинации.
Первое, что нам потребуется, это написать функцию подсчета картинок в выбранной галерее. Назовем функцию count_images() и опишем ее в файле функций:

Профессия PHP-разработчик с нуля до PRO
Готовим PHP-разработчиков с нуля
Вы с нуля научитесь программировать сайты и веб-приложения на PHP, освоите фреймворк Laravel, напишете облачное хранилище и поработаете над интернет-магазином в команде. Сможете устроиться на позицию Junior-разработчика.
1 2 3 4 5 6 7 8 9 10 |
/** * кол-во картинок галереи **/ function count_images($gallery){ global $db; $query = "SELECT COUNT(*) FROM images WHERE gallery_id = $gallery"; $res = mysqli_query($db, $query); $row = mysqli_fetch_row($res); return $row[0]; } |
В файле pagination.php, соответственно, в переменную $count_img будем принимать уже результат работы только что написанной функции:
1 2 |
// общее кол-во фото $count_img = count_images($gallery); |
Поскольку далее нам нужно выбирать из БД только определенное кол-во картинок для каждой конкретной страницы, то нам необходимо переместить в индексном файле подключение файла pagination до вызова функции get_images_db(). Это логично, поскольку в файле pagination.php есть данные (переменные $start_pos и $perpage), которые нам потребуются для функции get_images_db().
Теперь расширим функцию get_images_db(), принимаю 2 дополнительных параметра. Эти параметры как раз и нужны для того, чтобы выбирать определенное кол-во картинок для определенной страницы. В индексном файле передадим дополнительные параметры:
1 |
$images = get_images_db($gallery, $start_pos, $perpage); |
И в файле функций изменим функцию get_images_db():
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/** * получение картинок из БД **/ function get_images_db($gallery, $start_pos, $perpage){ global $db; $query = "SELECT id, img, description FROM images WHERE gallery_id = $gallery ORDER BY id ASC LIMIT $start_pos, $perpage"; $res = mysqli_query($db, $query); $images = array(); while($row = mysqli_fetch_assoc($res)){ $images[$row['id']] = $row; } return $images; } |
И осталось поменять вывод картинок в индексном файле. Теперь вывод будет таким:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<div class="gallery"> <?php if($images): ?> <?php foreach($images as $image): ?> <div class="item"> <div> <a data-lightbox="lightbox" href="<?=SITE . $bdir . $image['img']?>"> <img class="front" src="<?=SITE . $dir . $image['img']?>" alt=""> <span class="back"><?=$image['description']?></span> </a> </div> </div> <?php endforeach; ?> <?php else: ?> <p>В данной галерее нет картинок</p> <?php endif; ?> <div class="clear"></div> <?php if( $count_pages > 1 ): ?> <div class="pagination"><?=$pagination?></div> <?php endif; ?> </div> |
После всех указанных изменений, галерея должна заработать, правда, пока что с перезагрузкой страниц. В следующем уроке мы добавим переход по страницам без их перезагрузки.

Профессия PHP-разработчик с нуля до PRO
Готовим PHP-разработчиков с нуля
Вы с нуля научитесь программировать сайты и веб-приложения на PHP, освоите фреймворк Laravel, напишете облачное хранилище и поработаете над интернет-магазином в команде. Сможете устроиться на позицию Junior-разработчика.
На этом мы завершим текущий урок. Удачи и до новых встреч!