我从以下开始:
<form action="" method="post" enctype="multipart/form-data" id="form">
<?php foreach($attributes as $attribute){ ?>
<input type="checkbox" name="attribute[][attr_id]" value="<?php echo $attribute['attribute_id']; ?>">
<input type="text" name="attribute[][attr_name]"> value="<?php echo $attribute['attribute_name']; ?>">
<?php } ?>
</form>
所以每个$属性都有一个复选框和一个文本输入;每当有人检查(一个或多个方框)并插入文本(仅限于已检查的项目)时,我希望在数据库中获取特定项目的[attr_id]
和[attr_name]
。
所以我继续以下内容:
if(isset($_POST['attribute'])){
foreach($_POST['attribute'] as $attribute){
$attr_id = $attribute['attr_id'];
$attr_name = $attribute['attr_name'];
"INSERT INTO " . DB_PREFIX . "attribute_xref SET productid = '" . $productid . "', attribute_id='". $attr_id ."', attribute_name='" . $attr_name . "'";
}
}
但是,结果与我预期的有些不同。每次选中一个框并输入其文本输入时,它们的值将被发送到两个不同的DB行:
productid -- attribute_id -- attribute_name
10 -- 102 -- empty
10 -- 0 -- somename
在上面的第二行,attribute_id没有被检查的值。
我无法全面了解我的错误。
答案 0 :(得分:0)
最后。棘手的答案是为关联输入添加相同的数字索引,如下所示:
<form action="" method="post" enctype="multipart/form-data" id="form">
<?php foreach($attributes as $attribute){ ?>
<input type="checkbox" name="attribute[i][attr_id]" value="<?php echo $attribute['attribute_id']; ?>">
<input type="text" name="attribute[i][attr_name]"> value="<?php echo $attribute['attribute_name']; ?>">
<?php } ?>
</form>
其中&#34;我&#34;在我的情况下,将采用来自&#39; attribute_id&#39;:
的变量号<input type="checkbox" name="attribute[<?php echo $attribute['attribute_id']; ?>][attr_id]" value="<?php echo $attribute['attribute_id']; ?>">
<input type="text" name="attribute[<?php echo $attribute['attribute_id']; ?>][attr_name]"> value="<?php echo $attribute['attribute_name']; ?>">
希望我的回答也能帮助将来的某个人。