Получить входные данные из нескольких текстовых полей в массив и вставить в поле БД

У меня есть форма заказа. Он имеет 10 текстовых полей для ввода пользователем количества. Как вы храните входные данные в массиве и вставляете в поле базы данных (разделенное запятыми)? Примечание: НЕ требуется вводить данные во всех текстовых полях. Например, входные данные 1, 2, 3, 4 … они должны появиться в поле db, также 1, 2, 3, 4

примеры и описания будут великолепны. Я относительно новичок в этом.

3

Решение

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

<form action="submit.php" method="post">
<input type="text" name="order[]" />
<input type="text" name="order[]" />
<input type="text" name="order[]" />
<input type="text" name="order[]" />
<input type="submit" />
</form>

ваш submit.php:

     <?php
$data ="";
foreach($_POST["order"] as $key=>$val){
if(isset($val) && $val !="")
$data.=$val.",";
}
$data=trim($data);
echo $data;// use data

Замечания: не используйте MySQL вместо PDO или MySQL. mysql устарела.

0

Другие решения

Итак, допустим, у вас есть таблица с четырьмя текстовыми полями — fieldOne, fieldTwo, fieldThree, fieldFour,

Ваш html form должен выглядеть следующим образом (я пропускаю нерелевантные части).

<form method="POST">
<textarea name='data[fieldOne]'></textarea>
<textarea name='data[fieldTwo]'></textarea>
<textarea name='data[fieldThree]'></textarea>
<textarea name='data[fieldFour]'></textarea>
</form>

Теперь ваш PHP код:

$data = $_POST['data']; // PHP converts names like data[fieldOne] into arrays.

foreach ($data as $key => $value) {
$fieldNames[] = "`{$key}`";    //field names for our insert statement - `fieldOne`, `fieldTwo`, etc...
$values[":{$key}"] = strip_tags($value);
}

$stmt = $pdo->prepare("INSERT INTO `tableName` (".implode(', ', $fieldNames).") VALUES (".implode(", ", array_keys($values)).")"; // If you're not using PDO and prepared statements you're doing it wrong, so i absolutely recommend you learning that if you haven't already.
$stmt->execute($values);

Это должно делать свое дело.
Обратите внимание, что использование подготовленных выражений освобождает вас от ручного экранирования ваших данных. Тем не менее, если вы беспокоитесь о XSS атаки, вы все равно должны использовать strip_tags из filter расширение.

3

HTML

<form action="my_page_that_processes_orders.php" method="post">
<input type="text" name="order[product1]" />
<input type="text" name="order[product2]" />
<input type="text" name="order[product3]" />
<input type="text" name="order[product4]" />
<input type="submit" />
</form>

my_page_that_processes_orders.php

$data = $_POST["order"];// Advisable to perform checks for security reasons (not going to do it)

$aux = '';
foreach($data as $product => $qty) {
// Do whatever you please with the data.
$aux .= "$product $qty,"; // For instance.
}

$string_to_insert = rtrim($aux, ",");
// Insert it in DB or do more processing stuff.

Надеюсь, поможет.

С уважением.

2
По вопросам рекламы [email protected]