Галерея для сайта. Урок 7. БД

Галерея для сайта

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

скачать исходникискачать урок

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

/**
* кол-во картинок галереи
**/
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 будем принимать уже результат работы только что написанной функции:

// общее кол-во фото
$count_img = count_images($gallery);

Поскольку далее нам нужно выбирать из БД только определенное кол-во картинок для каждой конкретной страницы, то нам необходимо переместить в индексном файле подключение файла pagination до вызова функции get_images_db(). Это логично, поскольку в файле pagination.php есть данные (переменные $start_pos и $perpage), которые нам потребуются для функции get_images_db().

Теперь расширим функцию get_images_db(), принимаю 2 дополнительных параметра. Эти параметры как раз и нужны для того, чтобы выбирать определенное кол-во картинок для определенной страницы. В индексном файле передадим дополнительные параметры:

$images = get_images_db($gallery, $start_pos, $perpage);

И в файле функций изменим функцию get_images_db():

/**
* получение картинок из БД
**/
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;
}

И осталось поменять вывод картинок в индексном файле. Теперь вывод будет таким:

<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>

После всех указанных изменений, галерея должна заработать, правда, пока что с перезагрузкой страниц. В следующем уроке мы добавим переход по страницам без их перезагрузки.

На этом мы завершим текущий урок. Удачи и до новых встреч!

Хотите научиться делать фотогалереи как Вконтакте?

Прямо сейчас изучите курс по созданию красивой фотогалареи как Вконтакте!

Смотреть курс

Метки:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree