【发布时间】:2016-12-06 22:54:32
【问题描述】:
尝试设置动态 html 表单以使用 pdo 将数组插入数据库。 无需添加新的输入字段就可以正常工作。一旦我添加字段,我就会收到错误消息,说我的数组是空的。
PHP 代码:
if(isset($_POST['submit']))
{
$items = (isset($_POST['items']) && is_array($_POST['items'])) ? $_POST['items'] : array();
$insertStmt = $db->prepare("INSERT INTO products (prod_id, type) VALUES (:id, :name)");
foreach ($items as $item)
{
$insertStmt->bindValue(':id', $item['id']);
$insertStmt->bindValue(':name', $item['name']);
$insertStmt->execute();
}
}
jquery 代码:
$(document).ready(function() {
var max_fields = 10;
var wrapper = $(".input_fields_wrap");
var add_button = $(".add_field_button");
var x = 1;
$(add_button).click(function(e)
{
e.preventDefault();
if(x < max_fields)
{
x++; //text box increment
$(wrapper).append('<div>Product ID<input type="text" name="items[][id]"/><br>Product Name<input type="text" name="items[][name]"/><a href="#" class="remove_field">Remove</a></div>');
}
});
$(wrapper).on("click",".remove_field", function(e)
{
e.preventDefault(); $(this).parent('div').remove(); x--;
})
});
html代码:
<form action="" method="POST">
<div class="input_fields_wrap">
<button class="add_field_button">Add Product</button>
<div>Product<input type="text" name="items[][id]"></div>
<div>Product Name<input type="text" name="items[][name]"></div>
</div>
<button type="submit" name="submit" class="inner">Save workout</button>
</form>
更新:
由于数组不允许相同的键,我更改了我的 javascript。
$(wrapper).append('<div>Product ID<input type="text" name="items['+x+'][id]"/><br>Product Name<input type="text" name="items['+x+'][name]"/><a href="#" class="remove_field">Remove</a></div>');
还有表单输入。
<div>Product<input type="text" name="items[0][id]"></div>
<div>Product Name<input type="text" name="items[0][name]"></div>
【问题讨论】:
-
哪一行是说你的数组是空的?我建议在 PHP 顶部尝试
var_dump($items)以查看数组是否按照您期望的方式出现 -
@Joundill Error1:未定义索引:名称 Erro2:违反完整性约束:1048 列“名称”不能为空”
$insertStmt->bindValue(':name', $item['name']); -
Array 正在使用 vardump。