尺寸数组项不插入同一个DB行

时间:2015-01-27 19:44:08

标签: php multidimensional-array

我从以下开始:

<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没有被检查的值。

我无法全面了解我的错误。

1 个答案:

答案 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']; ?>">

希望我的回答也能帮助将来的某个人。