Как наперед узнать ID ?

12
L
На сайте с 17.05.2013
Offline
88
1136

Есть форма добавления объявления на сайт. Одновременно можно загрузить фотографии к объявлению. Загрузка происходит с пом. аякс.(тоесть фото и данные объявления - 2 отдельные формы)

Вопрос: Как наперед узнать Id объявления которое добавит юзер чтобы нормально загрузить фотографии? Вернее сохранить их с привязкой к айди объявления.

Как вариант можно узнать максимальный номер айди в базе, увеличить его на единицу, но что будет если в один момент времени несколько пользователей добавят объявления? (тоесть попутаются айди и фотографии будут выводится в чужом объявлении)

---------- Добавлено 23.04.2014 в 11:32 ----------

Идеальным вариантом видится при нажатии на кнопку добавить объявление вставлять в базу пустую запись и потом ее апдейтить. Так проблем не будет. Единственное, что написать крон, который бы чистли пустые записи если пользователь отказался или по каким-либо причнам не добавил объявления. Но этот вариант немного удет подгружать сервер.

Есть ли еще какие-то варианты хранения данных для выше описанной задачи, более изящные, что ли..?

astraliens
На сайте с 25.09.2009
Offline
54
#1

создать объявление (ну или просто создайте пустую запись, потом обновляйте её), потом привязать фото к его ID, если фото загружаются до создания записи - держать их во временном буфере, откуда потом подвязать к записи.

ASTRALiENS - разработка сайтов (http://astraliens.net)
LEOnidUKG
На сайте с 25.11.2006
Offline
1772
#2

т.е. загрузить фотографию, а потом записать её в БД никак?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
L
На сайте с 17.05.2013
Offline
88
#3
если фото загружаются до создания записи - держать их во временном буфере, откуда потом подвязать к записи.

можно отсюда подробнее?

---------- Добавлено 23.04.2014 в 11:43 ----------

т.е. загрузить фотографию, а потом записать её в БД никак?

Ну а как связать с самим объявлением если мы не знаем его айди в базе?

LEOnidUKG
На сайте с 25.11.2006
Offline
1772
#4
luckydan:
Ну а как связать с самим объявлением если мы не знаем его айди в базе?

😂 😂 😂

Фотография это не мистическая вещь. Она загружается на ваш хостинг и имеет название и даже может иметь название, которое вы ей задали. Потом это название вы и записываете в базу данных.

Если у вас отдельная таблица для фоток. Ну ок, добавляете объявление, считываете его ID, а потом забиваете таблицу с фотографиями по этому ID

astraliens
На сайте с 25.09.2009
Offline
54
#5
luckydan:
можно отсюда подробнее?

обрабатываете загрузку фото, держите их имена в переменной, создаете запись в бд, попутно узнаете заветынй ID, привязываете фотки из переменной к этому ID

SocFishing
На сайте с 26.09.2013
Offline
118
#6

При заходе на объявление создавать пустую запись с ID, IP, Date.

При добавлении апдейтить запись с выборкой по IP и сортировкой по Date.

По крону каждый день вычищать пустые записи.

★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.
astraliens
На сайте с 25.09.2009
Offline
54
#7
SocFishing:
При заходе на объявление создавать пустую запись с ID, IP, Date.
При добавлении апдейтить запись с выборкой по IP и сортировкой по Date.
По крону каждый день вычищать пустые записи.

много ненужных движений, слишком "дорого" получается....и нет гарантий отсутствия коллизий в случае NAT

L
На сайте с 07.12.2007
Offline
351
#8
luckydan:
Загрузка происходит с пом. аякс.(тоесть фото и данные объявления - 2 отдельные формы)

При выдаче формы объявления - генерируйте уникальный хэш (например, по IP+время) и потом посылайте его в скрытом(hidden) поле обеих форм.

На стороне сервере при получении данных, если

- такого ХЭШа нет в таблице: вставляете запись(даже и пустую) и получаете её ID по mysql_insert_id()

- такой ХЭШ уже есть: получаете ID выборкой "SELECT Hash=" и апдейтите присланные данные в уже существующую запись

В любом случае, ID для загрузки фото будет известен, и все последующие AJAX-ы с аналогичным ХЭШ-ем будут апдейтить уже существующую запись.

Записи только с Фото и без текста самого объявления можно периодически чистить или просто не показывать на сайте.

Joker-jar
На сайте с 26.08.2010
Offline
167
#9

SELECT Auto_increment AS ai FROM information_schema.tables WHERE table_name='%имя_таблицы%' AND table_schema = DATABASE() LIMIT 1

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#10

1) Заливаем фото с именем time() .rand()

2) Пишем в куку(к примеру) это имя

3) После добавления объявления получаем mysql_insert_id()

4) ну и ренейм файла.

Подпись))
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий