[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP + MySql
Evilsoul
Поучился я на уроках IRBIS-Team и поставил себе задачу сделать галерею.

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

Вот наглядный пример чего я задумал:

Галерея первая
первьюв изображений из галереи (рандом) допустим 4 изображения

Галерея вторая
первьюв изображений из галереи (рандом) допустим 4 изображения

Галерея третья
первьюв изображений из галереи (рандом) допустим 4 изображения

и.т.д

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



Спустя 22 минуты, 5 секунд (10.01.2011 - 12:04) alex12060 написал(а):
Проще сделать так:

Галереи (gallerys):

id (auto_increment) - Уникальный ид таблицы
title - Название
cover - Кавер (обложк0) галереи
count - кол-во фоток
show - показ выбранной галереи
maxphotos -

Фотографии (photos)

id (auto_increment) - Уникальный ид таблицы
aid - (albumId) - Привязка к определенной галерее
title - Определение фото
show - Показ фотографии

Ну и еще можно надумать) По-моему это самый верный способ)

Спустя 16 минут, 8 секунд (10.01.2011 - 12:20) Evilsoul написал(а):
alex12060 - спасибо, об этом варианте я думал (немного иначе), но хочется ещё побольше мнений услышать smile.gif

Вот как я себе это представлял, если с двух таблиц...

Галереи (galleries):

id (auto_increment) - Уникальный ид таблицы
date - Дата (создания галереи)
title - Название
description - Опись галереи

Изображения (images)

id (auto_increment) - Уникальный ид таблицы
aid - (albumId) - Привязка к определенной галерее
date - Дата (добавления изображения)
subtitle - Подпись изображения
fname - Имя изображения

Объясни пожалуйста эти столбцы...

cover - Кавер (обложк0) галереи
count - кол-во фоток
show - показ выбранной галереи
maxphotos -

Спустя 4 часа, 15 минут (10.01.2011 - 16:35) Evilsoul написал(а):
Дамп базы галерей:
Свернутый текст
-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Янв 10 2011 г., 15:38
-- Версия сервера: 5.1.36
-- Версия PHP: 5.2.10

SET SQL_MODE=
"NO_AUTO_VALUE_ON_ZERO";

--
-- База данных: `test`
--

-- --------------------------------------------------------

--
-- Структура таблицы `galleries`
--

CREATE TABLE IF NOT EXISTS `galleries` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`title` varchar(150) NOT NULL,
`description` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;

--
-- Дамп данных таблицы `galleries`
--

INSERT INTO `galleries` (`id`, `date`, `title`, `description`) VALUES
(1, '2011-01-10 12:37:21', 'Первая галерея', 'опись'),
(2, '2011-01-10 12:37:21', 'Вторая галерея', 'опись'),
(3, '2011-01-10 12:37:21', 'Третья галерея', 'опись'),
(4, '2011-01-10 12:37:21', 'Четвертая галерея', 'опись'),
(5, '2011-01-10 12:37:21', 'Пятая галерея', 'опись'),
(6, '2011-01-10 12:37:21', 'Шестая галерея', 'опись'),
(7, '2011-01-10 12:37:21', 'Седьмая галерея', 'опись'),
(8, '2011-01-10 12:37:21', 'Восьмая галерея', 'опись'),
(9, '2011-01-10 12:37:21', 'Девятая галерея', 'опись'),
(10, '2011-01-10 12:37:21', 'Десятая галерея', 'опись');



Дамп базы изображений:
Свернутый текст
-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Янв 10 2011 г., 15:32
-- Версия сервера: 5.1.36
-- Версия PHP: 5.2.10

SET SQL_MODE=
"NO_AUTO_VALUE_ON_ZERO";

--
-- База данных: `test`
--

-- --------------------------------------------------------

--
-- Структура таблицы `images`
--

CREATE TABLE IF NOT EXISTS `images` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`aid` int(10) unsigned NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`subtitle` varchar(150) DEFAULT NULL,
`fname` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=51 ;

--
-- Дамп данных таблицы `images`
--

INSERT INTO `images` (`id`, `aid`, `date`, `subtitle`, `fname`) VALUES
(1, 1, '2011-01-10 12:38:27', NULL, '1.jpg'),
(2, 1, '2011-01-10 12:38:27', NULL, '2.jpg'),
(3, 1, '2011-01-10 12:38:27', '', '3.jpg'),
(4, 1, '2011-01-10 12:38:27', '', '4.jpg'),
(5, 1, '2011-01-10 12:38:27', NULL, '5.jpg'),
(6, 2, '2011-01-10 12:40:06', NULL, '6.jpg'),
(7, 2, '2011-01-10 12:40:06', NULL, '7.jpg'),
(8, 2, '2011-01-10 12:40:06', NULL, '8.jpg'),
(9, 2, '2011-01-10 12:40:06', NULL, '9.jpg'),
(10, 2, '2011-01-10 12:40:06', NULL, '10.jpg'),
(11, 3, '2011-01-10 12:40:06', NULL, '11.jpg'),
(12, 3, '2011-01-10 12:40:06', NULL, '12.jpg'),
(13, 3, '2011-01-10 12:40:06', NULL, '13.jpg'),
(14, 3, '2011-01-10 12:40:06', NULL, '14.jpg'),
(15, 3, '2011-01-10 12:40:06', NULL, '15.jpg'),
(16, 4, '2011-01-10 12:40:06', NULL, '16.jpg'),
(17, 4, '2011-01-10 12:40:06', NULL, '17.jpg'),
(18, 4, '2011-01-10 12:40:06', NULL, '18.jpg'),
(19, 4, '2011-01-10 12:40:06', NULL, '19.jpg'),
(20, 4, '2011-01-10 12:40:06', NULL, '20.jpg'),
(21, 5, '2011-01-10 14:02:11', NULL, '21.jpg'),
(22, 5, '2011-01-10 14:02:11', NULL, '22.jpg'),
(23, 5, '2011-01-10 14:02:11', NULL, '23.jpg'),
(24, 5, '2011-01-10 14:02:11', NULL, '24.jpg'),
(25, 5, '2011-01-10 14:02:11', NULL, '25.jpg'),
(26, 6, '2011-01-10 14:02:11', NULL, '26.jpg'),
(27, 6, '2011-01-10 14:02:11', NULL, '27.jpg'),
(28, 6, '2011-01-10 14:02:11', NULL, '28.jpg'),
(29, 6, '2011-01-10 14:02:11', NULL, '29.jpg'),
(30, 6, '2011-01-10 14:02:11', NULL, '30.jpg'),
(31, 7, '2011-01-10 14:02:11', NULL, '31.jpg'),
(32, 7, '2011-01-10 14:02:11', NULL, '50.jpg'),
(33, 7, '2011-01-10 14:02:11', NULL, '32.jpg'),
(34, 7, '2011-01-10 14:02:11', NULL, '33.jpg'),
(35, 7, '2011-01-10 14:02:11', NULL, '34.jpg'),
(36, 8, '2011-01-10 14:02:11', NULL, '35.jpg'),
(37, 8, '2011-01-10 14:02:11', NULL, '36.jpg'),
(38, 8, '2011-01-10 14:02:11', NULL, '37.jpg'),
(39, 8, '2011-01-10 14:02:11', NULL, '38.jpg'),
(40, 8, '2011-01-10 14:02:11', NULL, '39.jpg'),
(41, 9, '2011-01-10 14:02:11', NULL, '40.jpg'),
(42, 9, '2011-01-10 14:02:11', NULL, '41.jpg'),
(43, 9, '2011-01-10 14:02:11', NULL, '42.jpg'),
(44, 9, '2011-01-10 14:02:11', NULL, '43.jpg'),
(45, 9, '2011-01-10 14:02:11', NULL, '44.jpg'),
(46, 10, '2011-01-10 14:02:11', NULL, '45.jpg'),
(47, 10, '2011-01-10 14:02:11', NULL, '46.jpg'),
(48, 10, '2011-01-10 14:02:11', NULL, '47.jpg'),
(49, 10, '2011-01-10 14:02:11', NULL, '48.jpg'),
(50, 10, '2011-01-10 14:02:11', NULL, '49.jpg');



Сам код для меню галерей:
/**
* Limit of viewing of images for the menu of galleries
* Лимит просмотра изображений для меню галерей
*/

define('LIMIT_VIEW_IMG_GALLERIES', 4);

/**
* Quantity of galeries on page
* Количествой галерей на странице
*/

define('NUM_GALLERIES_ON_PAGE', 3);

/**
* Connection
* Подключение
*/

include './mysql.php';

/**
* Construction of galleries with viewing by images
* Построение галерей с превьюв изображениями
*/

$start = gettimeofday();

$page = !empty($_GET['page']) ? (int)$_GET['page'] : 1;

include './irb_paginator.php';
$paginator = new IRB_Paginator($page, NUM_GALLERIES_ON_PAGE);

$res = $paginator->countQuery("SELECT * FROM `galleries`");

$navigation = $paginator->createMenu();

while($row = mysql_fetch_assoc($res))
{
$res2 = mysqlQuery("SELECT `aid`, `fname`
FROM `images`
WHERE `aid` = "
.$row['id']. "
ORDER BY RAND()
LIMIT "
. LIMIT_VIEW_IMG_GALLERIES);

$row['date'] = $row['date'];
$row['title'] = htmlspecialchars($row['title']);
$row['description'] = htmlspecialchars($row['description']);

echo "\t" .$row['date'].
"\n\t<h2>" .$row['title'].
"</h2>\n\t" .$row['description']. "<br>";

for($i = 1; mysql_num_rows($res2) >= $i; $i++)
{
$row_img = mysql_fetch_assoc($res2);

$row['img'.$i] = '<img src="/images/' .$row_img['fname']. '">';

echo "\n\t" .$row['img'.$i];
}

echo "<br><hr>\n\n";
}

$end = gettimeofday();
$time = (float)($end['sec'] - $start['sec']) + ((float)($end['usec'] - $start['usec'])/1000000);

echo $time . "\n";



Поосуждайте меня пожалуйста...
Может будут замечания по оптимизации...

Спустя 2 часа, 10 минут, 49 секунд (10.01.2011 - 18:46) Evilsoul написал(а):
Продолжение: вывод полной галереи

if(empty($_GET['gallery']))
{
//Выше
}
else
{
echo 'Галерея: ' . $_GET['gallery']. "<br><br>";

$res = mysqlQuery("SELECT `aid`, `date`, `subtitle`, `fname`
FROM `images`
WHERE `aid`="
.$_GET['gallery'].
" ORDER BY `id`");

while($row = mysql_fetch_assoc($res))
{
$row['date'] = $row['date'];
$row['subtitle'] = /*htmlspecialchars($row['subtitle'])*/ 'Подпись фото';
$row['img'] = htmlspecialchars($row['fname']);
$row['url'] = '?page=1';

echo "\n\n\t" .
'<div align="center" style="float:left; margin-right:10px; padding:3px; border:1px solid #09f;">
<a href="'
.$row['url']. '">
<img src="./images/'
.
$row['fname']. '">'.
"\n\t<br><span>" .
$row['subtitle'] .
"</span><br>\n\t" .
$row['date']. "<br></div></a>";
}
}

Спустя 13 минут, 54 секунды (10.01.2011 - 19:00) Игорь_Vasinsky написал(а):
Цитата
cover - Кавер (обложк0) галереи
count - кол-во фоток
show - показ выбранной галереи
maxphotos -


cover - Кавер - тебе не надо - раз ты рандом по 4е превьюшки выводишь из галереи

count - кол-во фоток в данной галереи

show - показ выбранной галереи ???????? понятя не имею

maxphotos - максимально допустимое кол-во фоток в данной галлереи.... не знай зачемон предложил это.

Спустя 1 минута, 26 секунд (10.01.2011 - 19:02) Игорь_Vasinsky написал(а):
тока зачем код то выводить.. ещё и чужой шаблон.

если всё работает то.

Спустя 1 час, 21 минута, 52 секунды (10.01.2011 - 20:23) nugle написал(а):
Цитата
show - показ выбранной галереи ????????понятя не имею

Это скорее типа 0-не пока3ывать
1-пока3ывать..наверно так

Спустя 2 часа, 55 минут, 2 секунды (10.01.2011 - 23:18) Evilsoul написал(а):
Игорь_Vasinsky
Спасибо за толкование smile.gif

Какой же он чужой, сегодня с нуля своими рученьками написал rolleyes.gif
Здесь я использую навигацию из уроков IRBIS - team и конфигу mysql.

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

nugle
Наверное ты прав, нужно подумать над этим, нужно ли оно...

Завтра хочу продолжить если будет время...

Спустя 11 часов, 39 минут, 2 секунды (11.01.2011 - 10:57) Evilsoul написал(а):
Мне оч. нравятся из уроков одна функция (parseTpl), думаю ей здесь самое место.

Спустя 58 минут, 59 секунд (11.01.2011 - 11:56) Evilsoul написал(а):
Прошу прощения, ну совсем тупой ...
$date = '2011-01-10 12:38:27';

Какая функция может обрезать время из этой строки.

Спустя 4 минуты, 59 секунд (11.01.2011 - 12:01) Evilsoul написал(а):
Сделал так:
echo substr($date, 0, 10) . '<br>';


_____________
Кто хочет, ищет возможности, кто не хочет - причины. /_ К. Маркс
Истенно велик тот человек который сумел овладеть своим временем. /_Гесиод VIII-VII вв. до Р. Х.
Медлительный непрерывно борится с бедами всю жизнь. /_Гесиод VIII-VII вв. до Р. Х.
Для того что бы увидеть радугу нужно пережить дождь.
Женщины: Хочется чего-то красного но синего.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.