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

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

От автора: в этом уроке мы начнем изменять код галереи для того, чтобы она использовала в своей работе базу данных. С БД галерея станет более функциональной, в частности, в БД мы можем хранить короткие описания к каждой картинке, которые выводятся на обратной стороне картинки. Итак, давайте начнем.

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

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

CREATE TABLE IF NOT EXISTS `images` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `gallery_id` tinyint(3) unsigned NOT NULL,
  `img` varchar(255) NOT NULL,
  `description` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `gallery_id` (`gallery_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;

Далее нужно заполнить таблицу данными. В дополнительных материалах вы найдете файл дампа images.sql, который создаст нужную таблицу с данными.

Идем далее. Поскольку в БД у нас есть поле с номером галереи картинки, следовательно, мы должны в приложении как-то получать номер запрошенной галереи и показывать именно ее картинки. Получать номер мы будем из GET-параметра gallery.

В индексном файле после подключения файла функций получим номер галереи:

$gallery = isset($_GET['gallery']) ? (int)$_GET['gallery'] : 1;
if($gallery < 1) $gallery = 1;

Здесь все просто. Если GET-параметр есть, тогда возьмем его, иначе – считаем, что нужно показывать картинки галереи №1. Сейчас url у нас будет выглядеть примерно так: http://localhost/gallery/?gallery=2. Так мы запрашиваем картинки второй галереи. Однако, можно попробовать сократить url, используя возможности модуля mod_rewrite. Давайте попробуем сделать ЧПУ адрес вида http://localhost/gallery/2, который будет запрашивать картинки второй галереи.

Откроем файл .htaccess и добавим в него следующие строки:

RewriteEngine On
RewriteRule ^(\d+) index.php?gallery=$1 [QSA]

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

Теперь при обращении по ЧПУ адресу мы будем видеть нужную нам страницу. Ну и коль мы используем ЧПУ, нам нужно в функцию пагинации в файле pagination.php передавать третий параметр, который даст понять функции, что работа идет с ЧПУ:

$pagination = pagination($page, $count_pages, $modrew = 1);

Теперь осталось привести все ссылки в приложении к абсолютному формату, чтобы не было проблем с подключением скриптов, стилей и т.д. Для этого создадим файл config.php, который подключим перед файлом функций. Объявим в файле несколько констант и подключимся сразу к БД:

define("SITE", "http://localhost/gallery/");
define("DBHOST", "localhost");
define("DBUSER", "root");
define("DBPASS", "");
define("DBNAME", "gallery");
$db = @mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME) or die("Нет подключения к БД");
mysqli_set_charset($db, "utf8") or die("Не установлена кодировка соединения");

В константе SITE мы храним путь к приложению. Эта константа нам и понадобится для переписывания ссылок с относительных на абсолютные. Используем константу в индексном файле для всех ссылок примерно так:

<link rel="stylesheet" href="<?=SITE?>css/style.css">

Теперь давайте получим из БД картинки запрошенной галереи. Для этого в индексном файле закомментируем вызов функции get_images() и будем получать результат работы функции get_images_db():

$images = get_images_db($gallery);

Опишем функцию в файле функций:

/**
* получение картинок из БД
**/
function get_images_db($gallery){
	global $db;
	$query = "SELECT id, img, description FROM images WHERE gallery_id = $gallery ORDER BY id ASC";
	$res = mysqli_query($db, $query);
	$images = array();
	while($row = mysqli_fetch_assoc($res)){
		$images[$row['id']] = $row;
	}
	return $images;
}

В индексном файле можем распечатать массив $images, чтобы убедиться, что мы получаем картинки нужной галереи:

print_r($images);

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

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

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

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

Метки:

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

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

Комментарии (2)

  1. Андрей

    Подскажите где находится файл дампа images.sql?
    Найти не могу.

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

Ваш 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