У меня есть форма заказа. Он имеет 10 текстовых полей для ввода пользователем количества. Как вы храните входные данные в массиве и вставляете в поле базы данных (разделенное запятыми)? Примечание: НЕ требуется вводить данные во всех текстовых полях. Например, входные данные 1, 2, 3, 4 … они должны появиться в поле db, также 1, 2, 3, 4
примеры и описания будут великолепны. Я относительно новичок в этом.
Предположим, это ваше форма: если вы беспокоитесь только о массиве заказов, то ничего, кроме соответствующего ключа.
<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 устарела.
Итак, допустим, у вас есть таблица с четырьмя текстовыми полями — 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
расширение.
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.
Надеюсь, поможет.
С уважением.