@TopClans

Как заставить PHP записать сразу множество данных из одной формы в одну таблицу mysql?

Всем привет, я новичок в PHP, решил для практики сделать небольшой сайт для оформления заказов.

Есть таблица order, где содержится номер заказа и данные клиента.
И таблица order_items, где с номером заказа записаны данные заказываемых товаров: название, артикул, цена, количество.
UPD: Для каждого заказа будут созданы свои товары, и они не будут потом вновь использоваться.

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

Менее понятный метод - каким-то образом все данные из формы загнать в массив, и потом с помощью WHILE (есть строки в массиве) добавлять их в БД.

Третий метод - наплодить например 20 input`ов с именами: name1, sku1, price1, quantity1, name2, sku2, price2, quanity2 и тд, и потом наплодить 20 IF (в поле name1/name2/и так далее) что-то есть, то добавить соответственно данные из sku1/sku2 и тд в БД.

Но я чувствую, что есть какое-то простое и элегантное решение. Может кто-то подскажет?

UPD: для простоты понимания моей проблемы представьте, что речь идёт о регистрации пользователя/добавлении любой другой записи в MySQL.
Так вот, мне надо добавить сразу несколько пользователей. Нужно вывести, к примеру, 10 комплектов полей (логин пароль почта), потом те поля что заполнены - добавить в БД.
  • Вопрос задан
  • 1071 просмотр
Пригласить эксперта
Ответы на вопрос 2
@seriogja
И таблица order_items, где с номером заказа записаны данные заказываемых товаров: название, артикул, цена, количество.
Это неверный подход. В таблице order_items нужно хранить информацию о заказе (время, id клиента и т.д.). Для связи many-to-many нужно использовать связующую таблицу, которая содержит id заказа и идентификаторы товаров в этом заказе.
Ответ написан
  1. Элементы формы создавайте с помощью Javascript (количество отдайте на откуп пользователя, пусть для каждого товара поля создаются, скажем, по кнопке), делая полям определенный префикс и инкрементный индекс (art1, price1, quantity1 и т.д.). Обрабатывающему скрипту в $_post передавайте этот индекс (и значения всех полей формы, естественно).
  2. Сделайте функции, которые будут забирать переменные из $_post в массив с помощью цикла ($_post["art".i], где i от старта инкрементного индекса до его значения на момент отправки).
  3. Создайте функцию, которая будет пробегать полученные массивы и добавлять данные в таблицу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы