LINUX.ORG.RU

Загрузка видео / картинки к еще не созданной записи


0

0

Добрый день!

Подскажите пожалуйста по логике написания такой вот задачи. Есть таблица автомобилей. В ней есть поля image1, image2 и image3 где хранятся имена файлов с фотографиями конкретного авто. Простую загрузку (по старинке) в админке уже сделал. Все работает.

Теперь нужно дать самим пользователям (даже незарегистрированным) позволить размещать объявления про свои автомобили. Выглядит это так - "Дать объявление" -> появляются табы (jquery.ui) [Основая информация], [Загрузить фото], [Загрузить видео]. И внизу кнопка отправить. Все это одна большая форма.

Перейдя на вкладку "Загрузить фото" отображается допустим 3 белых квадрата и в них картинки "НЕТ ФОТО". Ниже кнопка "Обзор" для выбора файла на загрузку и сама ссылка "Загрузить". Пользователь выбирает через нее файл, жмет "Загрузить", файлик грузиться через Ajax и показаться в первом свободном белом квадрате.

Тут вот и вопрос. Подскажите как реализовать загрузку картинок для еще не созданного объявления. Т.е. как грузить не зная для кого? И в табличку название файлов загруженных не привяжешь, ее же ведь еще нету...

Спасибо.

почему бы не сделать 2 формы, в превой заполнить всю инфу, а после ее отправки предложить загрузить фото? KISS (Keep It Simple, Stupid)

redixin ★★★★
()
Ответ на: комментарий от redixin

>KISS

Тогда форма одна, в которой я вся инфа, и поля для аплоада, а после отсылки сперва заводим нужный объект записи и к нему привязываем фотки.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Тогда уж сначала заполнить данные объявления (без загрузки видео и картинок) первая форма, потом дать загрузить картинки 2ая форма, потом опубликовать - заключительная кнопка.

Тогда меньше шансов пользователю сделать ошибку, загрузить там видео на 100Мб :), не указав при этом обязательную информацию. А потом решать кучу проблем, что с этим делать. И можно сохранять информацию о ещё не полностью созданном объявлении, мало ли там браузер вылетит или ещё что, чтобы не терялось созданное.

Только сразу предупредить пользователя об этих шагах. Ну и пользуя ajax можно и создать вмечатление, что форма одна.

qnikst ★★★★★
()

>Есть таблица автомобилей. В ней есть поля image1, image2 и image3 где хранятся имена файлов с фотографиями конкретного авто.

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

wfrr ★★☆
()

> Тут вот и вопрос. Подскажите как реализовать загрузку картинок для еще не созданного объявления. Т.е. как грузить не зная для кого? И в табличку название файлов загруженных не привяжешь, ее же ведь еще нету...

Если как написано в постах выше сделать по каким либо причинам нельзя, и обязательно сначала грузить видео. То во все формы можно добавить уникальный id создания объявления и сохранять инфу о ещё не завершённом объявлении либо добававив в таблицу объявлений это новое поле, соотв можно создать пустое объявление и потом заполнить остальные поля, либо создав новые сущности для ещё не созданных объявлений, которые будут переноситься в основные таблицы после завершения создания объявления.

qnikst ★★★★★
()

записать в сессию id-шки загруженных в БД картинок?
или проблема в том, что база не нормализована?

thevery ★★★★
()
Ответ на: комментарий от qnikst

>Тогда меньше шансов пользователю сделать ошибку, загрузить там видео на 100Мб :), не указав при этом обязательную информацию.

Ну так запроси ещё раз его эту инфу. Всё введённое, плюс временное имя файла - в сессию. И запрос по новой.

KRoN73 ★★★★★
()
Ответ на: комментарий от wfrr

>Ошибка в этом месте.

Я не так давно переписывал код, где под картинки в каждой записи было 20(!) полей :D picture1, pucture2 ... picture20 :)

KRoN73 ★★★★★
()
Ответ на: комментарий от thevery

про нормализированность у автора не известно.

но даже если нормализировано и таблица картинок вида (pic_id,obj_id,..) он не знает какой obj_id прописать этой сущности, т.к. obj_id грубо говоря не создан.

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

>Если придерживаться принципа KISS, то проще всё же сделать в 2 шага :)

Ну, да. Если ожидаются 100Мб картинки с возможностью ошибки - то твой вариант проще :)

KRoN73 ★★★★★
()
Ответ на: комментарий от qnikst

ОМг, если таблица будет вида (objId, carId, image) то айдишник картинки очень даже будет известен, а айдишник машины можно проставить потом.

wfrr ★★☆
()
Ответ на: комментарий от wfrr

.. блин я что не понимаю чтоли этого :)

вопрос автора: -как я найду какой картинке прописать id-шник машины :)

qnikst ★★★★★
()
Ответ на: комментарий от wfrr

ээ.. а что не так?
не предлагать же мне Spring Web Flow автору...

thevery ★★★★
()
Ответ на: комментарий от qnikst

а в чём проблема проставить obj_id уже потом, при сохранении машины?

thevery ★★★★
()
Ответ на: комментарий от KRoN73

> Тогда форма одна, в которой я вся инфа, и поля для аплоада, а после отсылки сперва заводим нужный объект записи и к нему привязываем фотки.

да действительно. ТС послушай что тебе умные люди подсказывают

redixin ★★★★
()

> как реализовать загрузку картинок для еще не созданного объявления. Т.е. как грузить не зная для кого? И в табличку название файлов загруженных не привяжешь, ее же ведь еще нету...

При поступлении любых данных от пользователя, автоматически создавать объявление-"черновик". К нему привязывать картинки, видео и что там еще нужно.

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

Lucky ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.