使用未触及的复选框自动更新数据库(false)

时间:2012-11-20 11:05:30

标签: forms codeigniter codeigniter-2

我目前用这样的输入更新我的数据库记录

$this->my_model->update($id, $this->input->post()));

(这是在我对所有输入进行验证之后。“模型”还有一个期望的white_list数据。)

问题:如果我要更新复选框,并且它是“未标记”(即“false”) - 则该字段不会被浏览器“发布”。

例如 - 如果我勾选checkbox_two - 但保留checkbox_one未选中,$ _POST显示:

[field_one] = "some value"
[field_two] = "some value"
[checkbox_two] = 1

因此我的模型不会更新该字段 - 因为它不是帖子的一部分。

反过来不会发生同样的情况 - 因为“勾选”复选框被贴为“1” - 因此被正确更新。

[field_one] = "some value"
[field_two] = "some value"
[checkbox_one] = 1
[checkbox_two] = 1

问题:除了必须经常专门检查每个复选框外,是否有人有一个优雅的解决方案来解决这个问题?

1 个答案:

答案 0 :(得分:3)

<input type="hidden" name="example" value="FALSE" />
<input type="checkbox" name="example" value="TRUE" />

这种做法既简单又合乎逻辑。如果选中复选框,则$this->input->post('example') == 'TRUE'否则为$this->input->post('example') == 'FALSE'

name=""的最新给定值会覆盖之前,因此givin prio checkbox&gt; hidden

编辑:此解决方案等于Rick Calder评论中给出的最多评分答案。不过,我自己也得出了这个结论。