Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Фотогалерея
 
 автор: Naught   (07.11.2004 в 19:41)   письмо автору
 
 

Мне очень понравилась ваша фотогалерея. Но хотелось бы узнать вот что:
Можно ли сделать так, чтобы в фотогалерее были многоуровневые каталоги. Т.е. структура такого вида:
-каталог
..-каталог1
....-каталог11
....-каталог12
..-каталог2
..-каталог3
Ну и так далее. И тобы была такая опция - посмотреть собержимое каталога - т.е. содержимое подкаталогов, состоящих в этом каталоге отображалось бы вместе, как галерея.
Было бы здорово, если бы вы это реализовали или хотя бы подсказали как это реализовать.

   
 
 автор: cheops   (07.11.2004 в 21:00)   письмо автору
 
   для: Naught   (07.11.2004 в 19:41)
 

1) База данных в фотогалерее проектировалась как раз с учётом бесконечной вложенности каталога (досталась в наследства от наших внутренних, не распрастраняемых Web-приложений :), но мы эту возможность заморозили, так как глубокая вложенность затрудняет навигацию.
2) Так запросто поправить не получится, так как в отличие от других Web-приложений, от реализации бесконечной вложенности отказались практически на первых же этапах - я сейчас попытался по быстрому поправить - не получилось - нужно перерабатывать.
3) При постоении нужно отталкиваться от того факта, что каждая запись в таблице photocat соотвествует отдельному каталогу, если каталог вложенный, то в поле id_parent заносится первичный ключ родительского каталога. Реализовать это не сложно, достаточно раскомментировать управляющую ссылку на добавление подкаталога, только вот движок навигации ни в админе, ни в блоке представления, в этом Web-приложении такой структуры не поддерживает :(

   
 
 автор: Naught   (07.11.2004 в 21:22)   письмо автору
 
   для: cheops   (07.11.2004 в 21:00)
 

Со временем сможете выложить сюда версию с поддержкой каталогов? Если не сложно?

   
 
 автор: cheops   (07.11.2004 в 21:25)   письмо автору
 
   для: Naught   (07.11.2004 в 21:22)
 

Да скорее всего при следующих модификациях в фотогалерее будут введены два режима работы - одноуровневый и многоуровневый.

   
 
 автор: Naught   (09.11.2004 в 00:01)   письмо автору
 
   для: cheops   (07.11.2004 в 21:25)
 

А долго ли ждать?

   
 
 автор: cheops   (09.11.2004 в 00:08)   письмо автору
 
   для: Naught   (09.11.2004 в 00:01)
 

/*Медленно обшаривая стол глазами в поисках плана развития Softtime-INFO*/ Возможно придётся подождать некоторое время, сейчас все силы SoftTime брошены на создание телефонной справочной службы, мои лично на создание и сопровождение ПО для операторов.

   
 
 автор: Naught   (09.11.2004 в 19:51)   письмо автору
 
   для: cheops   (07.11.2004 в 21:00)
 

>Реализовать
>это не сложно, достаточно раскомментировать управляющую
>ссылку на добавление подкаталога

А где она закомментирована?
Извиняюсь, что так настойчиво к вам пристаю, но уж очень нужна фотогалерея с вложенность каталогов :)

   
 
 автор: cheops   (09.11.2004 в 21:13)   письмо автору
 
   для: Naught   (09.11.2004 в 19:51)
 

admin/index.php - строка 28 - следует убрать else - тогда добавление будет доступно и в других подкаталогах - только вот отображаться они все будут как подкаталоги корневого каталога. Для того, чтобы исправить ситуацию необходимо в SQL-запросах поставить фильтры WHERE id_parent=... первичному ключу каталога, для подкаталогов корневого каталога это 0, для каталогов с более глубокой степенью вложенности нужно подставлять первичный ключ каталога-родителя.

   
 
 автор: Naught   (11.11.2004 в 20:58)   письмо автору
 
   для: cheops   (09.11.2004 в 21:13)
 

>нужно подставлять первичный ключ каталога-родителя.
блин, а как же это динамически-то реализовать? :/

   
 
 автор: cheops   (11.11.2004 в 21:05)   письмо автору
 
   для: Naught   (11.11.2004 в 20:58)
 

Мы обычно, при спуске по дереву каталогов, передаём через строку запроса параметр id_parent - в который помещаем номер первичного ключа текущего каталога, поэтому при переходе вниз всегда известно чьим потомком будет являтся этот катлог
например ссылка на добавление для корневого каталога
addcatalog.php?id_parent=0

для его подкаталога
addcatalog.php?id_parent=1
возврат index.php?id_paren=0

для подкаталога подкаталога
addcatalog.php?id_parent=2
возврат index.php?id_paren=1

   
 
 автор: Naught   (27.11.2004 в 21:57)   письмо автору
 
   для: cheops   (11.11.2004 в 21:05)
 

Поскорей бы фотогалерею новую...

   
 
 автор: Naught   (02.12.2004 в 21:04)   письмо автору
 
   для: cheops   (11.11.2004 в 21:05)
 

Я, наверное, тупой, но я нифига не понимаю, как сделать наследование динамически :(

   
 
 автор: cheops   (02.12.2004 в 21:14)   письмо автору
 
   для: Naught   (02.12.2004 в 21:04)
 

Создание такого каталога описывается в 6 главе нашей новой книги, но она к сожалению, ещё не отпечатана. Содержание я привести не могу (она занимает 60 страниц), да и права не имею. Разработка каталога начинается следующим образом:
Таблица catalog, включает 6 полей:
id_catalog — первичный ключ таблицы;
name — название подкаталога;
descrition — описание подкаталога;
pos — поле, определяющее позицию каталога относительно других при выводе списка каталогов в окне браузера;
hide — поле, типа ENUM, принимающее два значения 'show' и 'hide' и определяющее доступность каталога для просмотра посетителями. По умолчанию, поле принимает значение 'show', что соответствует состоянию доступности каталога для просмотра посетителями;
id_parent — поле, принимающее значение первичного ключа другого каталога, который является родительским для данного подкаталога.
Поле id_parent позволяет организовывать многоуровневое вложение каталогов. Значение данного поля равно 0 для каталогов расположенных в корневом каталоге и равно значению первичного ключа каталога по отношению к которому они являются подкаталогами. Оператор CREATE выполняющий создание данной таблицы приведен в листинге:

CREATE TABLE catalog (
  id_catalog INT(8) NOT NULL AUTO_INCREMENT,
  name TINYTEXT NOT NULL,
  description TINYTEXT NOT NULL,
  pos SMALLINT(3) NOT NULL default '0',
  hide ENUM('show','hide') NOT NULL DEFAULT 'show',
  id_parent INT(8) NOT NULL DEFAULT '0',
  PRIMARY KEY (id_catalog),
  KEY id_parent (id_parent)
) TYPE=MyISAM;

   
 
 автор: Naught   (08.12.2004 в 20:33)   письмо автору
 
   для: cheops   (02.12.2004 в 21:14)
 

Это все понятно.
У меня вызывает вопрос другое - как заставить скрипт "узнать" id_parent каталога. Т.е. как правильно сформулировать MySQL - запрос.

   
 
 автор: cheops   (08.12.2004 в 20:38)   письмо автору
 
   для: Naught   (08.12.2004 в 20:33)
 

Каждая ссылка должна содержать параметр id_parent:
www.mysite.ru/index.php?id_parent=1

А при отображении содержимого каталога следует использовать запрос:
SELECT * FROM catalog WHERE id_parent=$_GET['id_parent']

   
 
 автор: Naught   (09.12.2004 в 19:20)   письмо автору
 
   для: cheops   (08.12.2004 в 20:38)
 

Ага, спасибо, разобрался... Только вот пара вопросов появилось...
Вопрос 1. Вроде я со всем разобрался. Сделал добавление каталогов. Сделал просмотр каталогов. Но как сделать возврат на верхний уровень?
Вопрос 2. Почему вы делаете уменьшенную копию картинки, вместо того, чтобы просто указывать в теге <img> размер? С чем это связано?
Вопрос 3. Я сделал главную страничку фотогалереи по типу:
1.Название каталога корневого | фотография | - список ссылок
...описание каталога......................| .маленькая. | - на подкаталоги корневого
2.Название каталога корневого | фотография | - список ссылок
...описание каталога......................| .маленькая. | - на подкаталоги корневого
Идея, думаю, ясна.
Вопрос такой. Как сделать собсна список ссылок подкаталогов корневого каталога - ето раз. и как сделать, чтобы маленькая фотография бралась рандомно из каталога.
Вопрос 4. Как сделать, чтобы галереей корневого каталога являлась сумма всех фотографий, входящих в подкаталоги этого каталога.

   
 
 автор: cheops   (09.12.2004 в 22:21)   письмо автору
 
   для: Naught   (09.12.2004 в 19:20)
 

1) Здесь несколько путей,
a. передавать вниз по дереву каталогов первичный ключ родительского каталога в каком-нибудь дополнительном параметре (можно это значение засовать и в сессию)
б. Анализировать $_SERVER["HTTP_REFERER"], возвращающий адрес страницы с которой пришёл посетитель - если домен и каталог совпадает для фотогалереи смотреть откуда пришёл постетитль - не очень надёжно и можно поиметь неприятные фичи...
в. Осуществить SQL-запрос и выяснить кто приходится родителем текущему каталогу, так как всё-равно будет это делать для того, чтобы выяснить название каталога и его описание - вот и посмотрите его поле id_parent - это первичный ключ верхнего каталога - мне кажется это самый перспективынй путь.
2) Сейчас куда не плюнь цифровые камеры, с объёмом по 256 Мб и более, дизайнеры справедливо считают, что много не мало :))) и фотографируют на полном разрешении, что бы ничего не пропало :))) В результате картинки достигают размеров 2 и более мегабайт, конечно в таком виде они на сайт не идут, но всё-равно десяток картинок большого объёма могут отбить всякое желание далее просматривать сайт владельцем обычного или GPRS-модема.

   
 
 автор: cheops   (09.12.2004 в 22:32)   письмо автору
 
   для: Naught   (09.12.2004 в 19:20)
 

3,4) Про список ссылок подкаталогов корневого каталога не очень понял в чём проблема - их же можно выбрать просто SELECT-ом с условием id_parent=0 (признак подкаталога корневого каталога)
С 4 вопросом и рандомом ситуация такая, чтобы не осущствлять каждый раз рекурсивный спуск по дереву подкаталогов наверное имеет смысл ввести ещё одно поле, в котором для каждого подкаталога нижнего звена указывалась принадлежность его к одному из подкаталогов корневого каталога: и подсчитывать будет проще - количество фотографий в базе, чьё дополнительное поле равно первичному ключу подкаталога и случайный выбор проще организовать для этого достаточно будет организовать запрос вида
SELECT * FROM tbl WHERE ... ORDER BY RAND() LIMIT 1

   
 
 автор: Naught   (10.12.2004 в 22:49)   письмо автору
 
   для: cheops   (09.12.2004 в 22:32)
 

cheops, Дизайнер
Спасибо за подробные ответы :)
Буду мучать вашу замечательную фотогалерею дальше :)

   
 
 автор: glsv (Дизайнер)   (09.12.2004 в 22:54)   письмо автору
 
   для: Naught   (09.12.2004 в 19:20)
 

>Вопрос 2. Почему вы делаете уменьшенную копию картинки, вместо того, чтобы просто
>указывать в теге <img> размер? С чем это связано?

Можно просто менять размер картинки в теге <img>, но ведь сама картинка не станет меньше (в килобайтах). Она просто будет смасштабирована. Чтобы посетителю не грузить не нужные килобайты, нужно либо вручную создавать уменьшенные копии изображений, либо делать это автоматически с помощью GDLib.

   
 
 автор: Naught   (20.01.2005 в 21:17)   письмо автору
 
   для: Naught   (07.11.2004 в 19:41)
 

Поднимаю болезненный для себя вопрос. Недавно заметил, что вышла новая версия Вашей фотогалереи. Я на радостях ее скачал. Оказалось, что проблема вложенности каталогов так и не решена. Хотелось бы знать, будет ли сие полезное нововведение в следующих версиях фотогалереи?...
С уважением...

   
 
 автор: cheops   (20.01.2005 в 21:33)   письмо автору
 
   для: Naught   (20.01.2005 в 21:17)
 

Это серьёзная переработка, требующая уделения Web-приложению серьёзного внимания и последующему тестированию его. Произведённые изменения касались защиты данного Web-приложения - это текущее сопровождение, не отнимающее большого времени.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования