Записывать конкретные значения в базу данных X раз? - PullRequest
0 голосов
/ 02 октября 2010

Для начала я должен уточнить заголовок, чтобы вы действительно поняли, что я пытаюсь сделать.

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

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

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

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

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

Есть идеи, как это сделать?

Ответы [ 2 ]

1 голос
/ 02 октября 2010

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

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

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

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

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

foreach ($_POST['amounts'] as $product_id => $amount)
{
  if (!empty($amount)) // was a value given for this amount?
  {
    // build your insert query here
  }
}
0 голосов
/ 02 октября 2010

объединить productID и кол-во с "|"таким образом, это будет

productId = 14

Кол-во = 3

вставленное значение = 14 | 3

, затем после получения базы данных вы можете взорватьданные по "|"и иметь part1 = 14 и part2 = 3

...