Записывать конкретные значения в базу данных X раз?

0

Начнем с того, что я должен уточнить название, поэтому вы действительно понимаете, что я пытаюсь сделать.

Я работаю над shopping-cart-ish script, но это немного отличается, потому что все продукты (почти всегда) будут приобретаться каждый раз. Поэтому я считаю, что лучше всего перечислить все предметы вместе с таблицей, а затем позволить клиенту выбрать количество каждого продукта, который они хотят.

Он будет выглядеть примерно так:

-- Name ------------------------- Amount --
-- A random product ------------- 15 ------
-- Another random product ------- 2 -------
-- And a third one --- ---------- 19 ------
-- ------------------------------ ---------
-- ------------------------------ SUBMIT --

Проблема в том, что я не уверен, как записать ее в базу данных. Или более конкретно, я не знаю, как отправить данные таким образом, что я получаю все выбранные продукты, а также количество каждого из них в массив. Я могу добавить больше продуктов в базу данных позже, поэтому я не могу их жестко закодировать.

Я не могу опубликовать два значения на одном входе, что слишком плохо. Если бы я мог сделать это, я мог бы разместить идентификатор и сумму как два разных значения.

Любые идеи, как это сделать?

Теги:
submit

2 ответа

1

Когда вы создаете свои поля ввода, используйте массив для имени с идентификатором продукта в качестве ключа.

Например (где $product_id - идентификатор продукта, которому соответствует количество):

<input type="text" name="amounts[<?=$product_id?>]">

Затем в PHP после отправки формы $_POST['amounts'] будет массивом, где ключи являются идентификаторами продукта, а значения представляют собой фактические суммы. Вам не нужно ничего делать, чтобы это произошло; по умолчанию PHP будет распознавать, что данные GET/POST, содержащие [], должны быть внесены в массив.

Затем вы можете просто перебрать этот массив для обновления базы данных:

foreach ($_POST['amounts'] as $product_id => $amount)
{
  if (!empty($amount)) // was a value given for this amount?
  {
    // build your insert query here
  }
}
  • 0
    Большое спасибо! Я слишком устал, чтобы реализовать это сейчас, сейчас я иду спать. Но я сделаю это завтра и прокомментирую.
  • 0
    +1, самый простой (php-) способ получить данные без громоздких манипуляций со строками.
Показать ещё 1 комментарий
0

объединить идентификатор productID и qty с трубкой "|" так что это будет

ProductID = 14

Qty = 3

вставленное value = 14 | 3

то после вашей выборки db вы можете взорвать данные с помощью "|" и имеют part1 = 14 и part2 = 3

  • 0
    Я тоже об этом думал, но это не очень хорошо выглядело. И я должен был бы поручить пользователям сначала указывать идентификатор продукта и т. Д. Хех. Есть еще идеи?
  • 0
    -1. извилистое (и ломкое) решение проблемы

Ещё вопросы

Сообщество Overcoder
Наверх
Меню