我有一个表单,我可以在库存中添加商品。目前,我一次只能添加一个项目。这是表单截图:http://i.imgur.com/SdFBv.png。但我想完成这个:http://i.imgur.com/PoUpV.png(< just a sketch),它使用一个表单向数据库添加多个记录。这些是我目前的形式:
add.html:
<form action="add.php" method="POST">
<select name="category" id="category">
<option value="1">Caviar In Canned Jars</option>
</select>
<input id="name" name="name" type="text">
<input id="size" name="size" type="text">
<input id="sku" name="sku" type="text">
<input id="price" name="price" type="text">
<input value="Add" type="submit">
</form>
add.php:
$result = mysql_query("
INSERT INTO `items` (name, size, sku, price, category_id)
VALUES ('$_POST[name]', '$_POST[size]', '$_POST[sku]', '$_POST[price]', '$_POST[category]');");
if (!$result) {
echo "Something went wrong!";
} else {
echo '<script type="text/javascript">
<!--
window.location = "add.html"
//-->
</script>';
}
如何使用PHP和SQL(http://i.imgur.com/PoUpV.png)在第二个屏幕截图中实现该功能?
P.S。:我知道它很容易被SQL注入,但它只在本地Web服务器上运行
答案 0 :(得分:3)
步骤1.通过在输入名称后添加括号,将html位更改为数据数组。
<form action="add.php" method="POST">
<!-- row 1 -->
<select name="category[]" id="category">
<option value="1">Caviar In Canned Jars</option>
</select>
<input id="name" name="name[]" type="text">
<input id="size" name="size[]" type="text">
<input id="sku" name="sku[]" type="text">
<input id="price" name="price[]" type="text">
<!-- row 2 -->
<select name="category[]" id="category">
<option value="1">Caviar In Canned Jars</option>
</select>
<input id="name" name="name[]" type="text">
<input id="size" name="size[]" type="text">
<input id="sku" name="sku[]" type="text">
<input id="price" name="price[]" type="text">
<!-- submit at bottom -->
<input value="Add" type="submit">
</form>
只会提交一份。帖子将把所有数据保存在数组中。
步骤2.循环访问数据,执行单个插入或构建大型查询。
在这个例子中有5行数据。
for($i = 0; $i < 5; $i++)
{
$name = $_POST['name'][$i];
$size = $_POST['size'][$i];
...
/* verify data, do sql escaping */
$result = mysql_query("
INSERT INTO `items` (name, size, sku, price, category_id)
VALUES ('$name', '$size', '$sku', '$price', '$category');
");
/* do result handling */
}