我正在使用CodeIgniter和mySQL来构建一个复选框表单。表格包含4个选项;每个选项只有一个复选框;用户可以选择任何选项组合。我想做以下事情:
1 - 对于每个复选框,使用值1(如果未选中)或2(如果选中)并将这些值传递到数据库(每个复选框都有自己的字段)。现在,无论是选中还是未选中,复选框都会将值0发送到数据库。
2 - 一旦用户更新了他们的复选框,我想更新数据库以反映新值。现在,每次更新复选框都会添加一个新行。
到目前为止我所获得的是一个将复选框值提交给数据库,控制器和模型的表单:
表格
<?php echo form_open('addFoo'); ?>
<input type="checkbox" name="foo1" value="" />
<input type="checkbox" name="foo2" value="" />
<input type="checkbox" name="foo3" value="" />
<input type="checkbox" name="foo4" value="" />
<?php echo form_submit('submit', 'Save Changes'); ?>
<?php echo form_close(); ?>
控制器
function addFoo()
{
if ($this->input->post('submit')) {
$id = $this->input->post('id');
$foo1 = $this->input->post('foo1');
$foo2 = $this->input->post('foo2');
$foo3 = $this->input->post('foo3');
$foo4 = $this->input->post ('foo4');
$this->load->model('foo_model');
$this->foo_model->addFoo($id, $foo1, $foo2, $foo3, $foo4);
}
}
模型
function addFoo($id, $foo1, $foo2, $foo3, $foo4) {
$data = array(
'id' => $id,
'foo1' => $foo1,
'foo2' => $foo2,
'foo3' => $foo3,
'foo4' => $foo4
);
$this->db->insert('foo_table', $data);
}
答案 0 :(得分:3)
在您的控制器:
如果要为所有选中的复选框插入新条目:
foreach($this->input->post('foo') as $r)
{
$data['fieldname']=$r;
$this->model_name->insert($data);
}
如果要在单个条目中的不同字段中插入所有选中的复选框值,则
foreach($this->input->post('foo') as $key=>$val)
{
$data['field'.$key]=$val;
}
$this->model_name->insert($data);
答案 1 :(得分:1)
参考设置值,如果未选中,则复选框不会发送任何内容。为了实现你想要的,你必须这样做:
<input type="checkbox" name="foo[]" value="1" />
<input type="checkbox" name="foo[]" value="2" />
无论是否选中该复选框,都会发送一个值。
答案 2 :(得分:1)
使用每个复选框的不同值并获取checkbox数组的值,并在控制器print_r($this->input->post('foo'));
中使用它,它将打印用户选择的值
像这样使用
<?php
if (isset($_POST['submit'])){
print_r($_POST['foo']);
}
?>
<form action="" method="POST">
<input type="checkbox" name="foo[]" value="1">1<br>
<input type="checkbox" name="foo[]" value="2">2<br>
<input type="checkbox" name="foo[]" value="3">3<br>
<input type="checkbox" name="foo[]" value="4">4<br>
<input type="submit" value="submit" name="submit">
</form>