Добавление элементов из одного раздела в другой

Статус
Закрыто для дальнейших ответов.

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Допустим, что на сайте имеется галерея, где юзеры загружают свои картинки (картинки хранятся на сервере, пути к ним сохраняются в базу, вобщем всё, как полагается).
Также на сайте существуют блоги, где юзер может написать что-то о своей жизни, накалять какую-то фигню. (Название темы блога и путь к файлу с всем текстом блога лежит в базе, тоже, как полагается)

Задача:
Реализовать добавление в блоги изображений из галереи.

Поясню, например, юзер 1 загрузил свою фотку в галерею, юзера 2 эта фотка вдохновила, и он создал у себя в блоге темку, посвященную фото юзера 1.
Не хочу делать форму для добавления картинки к форме блога, чтобы юзер парился, качал фотку сперва себе, потом загружал (брррр, не все это умеют делать ещё - динозавры), а хочу сделать "прямые ссылки на фото", т.е именно на фото в галерее, чтобы вывести о нем необходимую инфу (название, размер, само фото и т.д).

Конкретизирую:
Юзер 2 вводит текст у себя в блоге:
- Бла бла бла, фотка у юзера 1 аааачешуенная, вот взгляните сами, народ *photo541*
Вместо *photo541* из таблицы галереи будет дёрнута инфа о картинке ID 541 и выведена так, как я захочу в блоге у юзера, например, название фото и сама картинка и число классов к фото.

Сделал регулярку, функцию, которая выбирает картинки с базы, сам вывод, всё хорошо. Но..

Столкнулся с проблемой:
- Фото попросту может быть удалено тем, кто её загружал, тогда у автора блога будет ошибочка поиска фото в тексте блога (тоже плохо, хочется глянуть фотку, правда ж или зря он статью писал целый день?)

Как бы решить данные проблемы? Или может быть по другому как-то можно реализовать это?
Как вариант, мне пришло в голову, так это создать таблицу "blogs_img" и при создании блога, в котором есть ссылка на фотку, копировать саму фотку куда-то в папку блогов и вставлять в эту новую таблицу инфу об этой фотке, а также ID (id_photo_gallery) на ЭТУ же фотку в таблице галереи.
А на выводе на страницу уже делать запрос в базу к той фотке из галерии и если там есть эта фотка, то выводить о ней инфу(сколько классов, рейтинг фото и т.д), а если фото нет, то просто вывести картинку, которую сохранили в папку с блогами с пометкой, что в галерее такой фотки уже нет.
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
Добавить статус картинке "удаленная" или "не удаленная" (0 или 1)

Или лучше

Создать БД с динамическими адресами для картинки.

Пользователь загрузил картинку. Ему адрес его логина в адресе.
Пользователь другой взял картинку, ему адрес тот же, только другой логин в пути.
Можно и полностью уникальный делать путь.
Привязывать конечно по ID картинки.

Код:
ID IDimg IDuser URLorig                  URL
0  123   1      /dirimg/imageqwerqw.jpg /BaNru/imageqwerqw.jpg
1  123   0      /dirimg/imageqwerqw.jpg /FiRеFоX/imageqwerqw.jpg
Разумеется часть (URLorig) можно хранить в основной таблице

Удаляя картинку ты удаляешь путь у этого пользователя из БД.
 

AngelGabriel

И имя мне - легион
Регистрация
23.11.2008
Сообщения
778
тру пацанчики отдают картинку через скрипты, во время выдачи можно изощряться как угодно
Код:
<img src="/get_image/id_image?size=600x500" >
У картинок должна быть единая файловая система, зная идентификатор картинки я могу ее показать где угодно и даже узнать в какой папке она на сервере. Принадлежность картинки к юзеру должна быть в таблице связей user_id to img_id, тип связи один ко многим, в таблицу добавить составной ключ(обязательно).
Если при выводи картинки, данной связи нет, то юзер удалил картинку или такой картинки нет.
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
AngelGabriel сказал(а):
У картинок должна быть единая файловая система, зная идентификатор картинки я могу ее показать где угодно и даже узнать в какой папке она на сервере. Принадлежность картинки к юзеру должна быть в таблице связей user_id to img_id, тип связи один ко многим, в таблицу добавить составной ключ(обязательно). Если при выводи картинки, данной связи нет, то юзер удалил картинку или такой картинки нет.
Если я правильно, то нужно сделать одну основную таблицу, в которой будет храниться вся информация (кто загрузил, размер, путь, тип файла) обо всех загруженных изображениях (с форума, с галереи, с писем, с блогов и т.д) - вся инфа о картинках будет сохраняться туда, вобщем единая таблица картинок для всего будет.
Также создать отдельные таблицы для форума, галереи и т.д, где будет храниться доп.инфа о картинке (приватность, кто установил, куда) и уже с помощью скриптов вытаскивать её, как ты написал выше?
Как-то вот так:

// Запрос для галереи:

SELECT ... FROM `img_gallery` AS `gallery`
JOIN `img_global` AS `global`
ON `gallery`.`id_img_global` = `global`.`id`
WHERE `gallery`.`id` = $id LIMIT 1

// img_gallery - таблица галереи (Кто загрузил фото, приватность и т.д)
// img_global - основная таблица всех изображений
// $id - id изображения в таблице галереи

//----------------------------------------

// Запрос для форума:

SELECT ... FROM `img_forum` AS `forum`
JOIN `img_global` AS `global`
ON `forum`.`id_img_global` = `global`.`id`
WHERE `forum`.`id` = $id LIMIT 1

// img_forum - таблица изображений форума (в какой теме, к какому посту изображение и т.д)
// img_global - основная таблица всех изображений
// $id - id изображения в таблице форума

Так?
 

AngelGabriel

И имя мне - легион
Регистрация
23.11.2008
Сообщения
778
Таблица img_forum не нужна. у тебя есть таблица с сообщениями с форума, там и храни, айдишник приаттаченой картинки к сообщению.
Смотри в таблице картинок, к примеру такие важные поля
[id_img] [md5_img] [owner] [scope] Нам нужно получить путь к картинкеб поехали.

К примеру у тебя все картинки хранятся в upload_images/ ,
ты берешь из поля [md5_img] такое значение f0400c92d2431b787209f0e10ea2674e.jpg
Код:
<?php
define('IMG_FOLDER', 'upload_images/', true);

$md5_img = 'f0400c92d2431b787209f0e10ea2674e.jpg';
$folder1 = substr($md5_img,0,2);
$folder2 = substr($md5_img,3,2);

$img_url = IMG_FOLDER.$folder1."/".$folder2."/".$md5_img;

// получаем путь к пикче upload_images/f0/40/f0400c92d2431b787209f0e10ea2674e.jpg

//...
Тепреь что касается как куда цеплять и про приватность.

К ТАБЛИЦЕ ГАЛЕРЕЙ ЦЕПЛЯЕМ ТОЛЬКО [id_img]
К ТАБЛИЦЕ СООБЩЕНИЙ С ФОРУМА ЦЕПЛЯЕМ ТОЛЬКО [id_img]
и т. д. ....

К примеру у поля [scope] такие параметры
0 - публичная
1 - приватная видна только [owner] (не трудно дагадаться, что в этом поле храним айдишник юзера из таблицы юзеров)
2 - видна только одноногим геям
и т. д.

Если при выводе картинки на форуме ее права на вывод были изменены (челом из [owner]) с 0 на 1 и т. д., то выводим что-то типа. "Владелец ограничил доступ к изображению"

Извиняюсь за ошибки, спешил.
 

AngelGabriel

И имя мне - легион
Регистрация
23.11.2008
Сообщения
778
FIX
Код:
$folder2 = substr($md5_img,2,2);
 
Статус
Закрыто для дальнейших ответов.
Верх Низ