【问题标题】:codeigniter batch update of specific form field based on its IDcodeigniter 根据其 ID 批量更新特定表单字段
【发布时间】:2015-11-25 14:43:42
【问题描述】:

我正在尝试以最简洁的方式在 codeigniter 中创建 update_batch。我的表单包含一个循环,其中我生成了一堆输入字段,这些字段将影响我的extra_config 数据库的val 列:

<?php echo form_open('config/edit') ?>
<table>
<?php foreach ($config_by_page[$i] as $config_item): ?>
<tr class="config-row">
    <td><?php echo $config_item['description'] ; ?></td>
    <td class="edit"><input required data-id="<?php echo $config_item['id'] ?>" name="val" value="<?php echo $config_item['val'] ; ?>"></input></td>
</tr>
<?php endforeach; ?>
</table>
</form>

现在 - 我有每个“val”应该绑定到的行的 id 存储在数据属性 data-id 中,因为我不确定如何执行 update_batch() 并将 val 插入相应的表格行。

这是我的控制器:

$data = $this->input->post(NULL, TRUE);
$this->config_model->edit_config($data);

这是我的模型:

public function edit_config($data){
  $this->db->update_batch('extra_scenarios', $data,'id');
}

如何最简洁地包含批量更新应发布到的行的 ID?我不想手动创建一个大数据数组,因为我需要更新近 100 个不同的行。

【问题讨论】:

  • yiu 正在尝试更新val 字段??
  • 是的,更新 val 字段,其中 id 列等于输入字段中的 id 属性(或以其他方式获取此输入 id)

标签: php mysql codeigniter activerecord codeigniter-3


【解决方案1】:

您可以如下更改输入字段名称,以便在提交时获得配置数组:

<input required name="config[<?php echo $config_item['id'];?>]" value="<?php echo $config_item['val'] ; ?>"/>

【讨论】:

  • 谢谢 - 我不确定如何修改我的模型以使用这些数据?
【解决方案2】:

问题来了

name="val"

这应该是一个数组

name="val[]"

【讨论】:

  • 抱歉 - 我很困惑 - 它怎么知道 val 应该与适当的 id 相关联?我的表中有多个列,它需要知道更新每行的“val”字段,其中 id 等于帖子中的 id
  • 看上面的答案,这样做,name="val[database id here]"
  • 如果我这样做而不以某种方式更改模型或控制器,我会得到:One or more rows submitted for batch updating is missing the specified index.
  • 帖子中的 $data 如下所示:Array ( [val] =&gt; Array ( [3] =&gt; 37.10119357072203 [4] =&gt; -122.06634521484374 [5] =&gt; 37.51571709945411...
  • 我想通了 - 你的回答很有帮助。为每个字段设置 val[] 后,您可以修改模型以创建数组数组:包含键和值:foreach ($data['val'] as $i=&gt;$val_item){ $val_data[] = array( 'id' =&gt; $i, 'val' =&gt; $val_item ); }$this-&gt;db-&gt;update_batch('extra_config', $val_data,'id');
猜你喜欢
  • 2022-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多