0

Нужно добавить из скрытых инпутов массив в базу данных.

 <form class="card-popup-wrapp cart__form form-send" method="POST" action="../func">

<input type="hidden" name="name[]" value="${name}"> <input class="js-cart-input-quantity" type="hidden" name="quantity[]" value="${quantity}"> <input class="js-cart-input-price" type="hidden" name="price[]" value="${price * quantity}">

<button class="btn-popup form__btn but" id="but" type="submit"> GO</button>

</form>

Мой PHP файл:

for ($i = 0; $i < count($names); ++$i) {
$name = $names[$i];
$price = $prices[$i];
$quantity = $quantities[$i];

mysqli_query($connect, "INSERT INTO zakaz (id, name, price, `quantity') VALUES (NULL, '$names', '$prices', '$quantities')");

};

header('Location: /index');

Добавляется последний элемент всё время. Как быть?

Daniil
  • 21
  • 3

1 Answers1

0

Надо поставить всем инпутам квадратные скобки в имена, т.е.

name="name[]"
name="quantity[]"
name="price[]"

На бэке будет не $name, $price, $quantity, а $names, $prices, $quantities

Дальше делаем цикл по любому из массивов

for ($i = 0; $i < count($names); ++$i) {
    $name = $names[$i];
    $price = $prices[$i];
    $quantity = $quantities[$i];

// ТУТ INSERT В БД }

  • В таком случае в полях этих пишется "Array" и то один, даже если товара больше, чем 1 – Daniil May 17 '22 at 06:04
  • Ну ты же умный, ты же понимаешь, что надо писать в цикле? Или ты ждёшь чуда и что код сам за тебя разберётся что куда и как класть? – Алексей Шиманский May 17 '22 at 06:09
  • Я вот наверное и задал вопрос для того, чтобы узнать как это сделать, кхм. – Daniil May 17 '22 at 06:16
  • Нет, ты задал совсем другой вопрос: У тебя в php скрипт из фронта не отправлялся массив, у тебя отправлялся только один элемент от каждого инпута. Теперь ты получаешь все элементы, как и хотел..... Ты не знаешь как в цикле пробегаться по элементам? – Алексей Шиманский May 17 '22 at 06:22
  • Хорошо. Здесь тогда еще вопрос. Как можно выполнить цикл, чтобы этот массив в несколько строк поместить в БД? – Daniil May 17 '22 at 06:28
  • Если у тебя был совсем другой вопрос - тогда стОит отредактировать вопрос и детальнее описать его: что у тебя есть на фронте, что с него отправляется, в каком виде, показать больше кода на фронте, а не обрывок, как эти данные отображаются в php скрипте, что именно написанно в php скрипте (показать код), что ты заносишь, что ожидаешь и что происходит – Алексей Шиманский May 17 '22 at 06:30
  • "Как можно выполнить цикл, чтобы этот массив в несколько строк поместить в БД?" --- как обычно. любой foreach. Гадать любят гадалки, а без детального описания мало кто может помочь – Алексей Шиманский May 17 '22 at 06:30
  • Добавил кода в вопрос – Daniil May 17 '22 at 06:44
  • Собсн, как я говорил - цикл.. Добавил в ответ..... хотя на самом делается всё чуть по-другому, но на ткущем этапе достаточно этого – Алексей Шиманский May 17 '22 at 07:02
  • С запросом тоже проблемы, вставил то, что на данный момент есть – Daniil May 17 '22 at 08:37
  • ну правильно надо вставлять $name, $price, $quantity – Алексей Шиманский May 17 '22 at 08:39
  • Хотелось бы пример что ли – Daniil May 17 '22 at 08:40
  • Ну вот скажи, зачем написаны строки $name = $names[$i]; $price = $prices[$i]; $quantity = $quantities[$i]; ? просто так? чтобы переменные были? чтобы сказать заказчику, что ты написал 34578 строк кода? или это данные для вставки? Ты немножечко поразмышляй, а не бездумно делай....... У тебя уже был код для вставки....какой ещё пример тут нужен. Посмотри в первую редакцию своего же вопроса – Алексей Шиманский May 17 '22 at 08:44
  • Не знаю что у меня было, во всяком случае оно не работало и не работает – Daniil May 17 '22 at 09:01
  • https://ru.stackoverflow.com/q/701142/191482 тогда сюда. – Алексей Шиманский May 17 '22 at 09:04
  • ага, спасибо за помощь – Daniil May 17 '22 at 09:06