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

Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас! 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 программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!
Разработка веб-приложения на PHP
Создайте веб-приложение на PHP на примере приема платежей на сайте
Смотреть