codeigniter按选定的复选框插入多行

时间:2012-12-10 12:43:31

标签: database codeigniter checkbox

如果有人可以提供帮助,我会有一个问题,我会非常感激。

<input type="checkbox" name="symbols[]" value="1" />
.... and this line repeats 10-15 times with a different value

模型

$data = array(
array('symbol_id' => $this->input->post('symbols'))
);
return $this->db->insert_batch('symbols', $data);

现在我的问题是只插入所选复选框的第一个值(在本例中为1)并忽略其他所有内容而不插入其他复选框的新行(如值3,5和9)。 你能给我一些选择吗?

注意:我希望实现的是为每个复选框插入一个新行,这样我就可以加入另一个包含符号图像的表格(复选框的值代表图像的id)。 如果你有任何其他方法我可以做到这一点非常受欢迎。 谢谢

编辑:这是var_dump:

array(7)

{

[0] => string(1) "8"

[1] => string(1) "9"

[2] => string(2) "10"

[3] => string(2) "11"

[4] => string(2) "12"

[5] => string(2) "13"

}

2 个答案:

答案 0 :(得分:1)

数据是作为一组有效值发送的,因此,如果要检查1,3,5,10,20,在$this->input->post('symbols');数组中,您将array(1, 3, 5, 10, 20)

function InsertSymbols() {
    $data = array();
    foreach($this->input->post('symbols') as $symb) {
        $data[] = array('symbol_id' => $symb);
    }
    return $this->db->insert_batch('symbols', $data);
}

答案 1 :(得分:0)

此代码用于CI,但您也可以在核心中使用它,只需在您的foreach中插入插入查询即可。

$symbol_arr = $this->db->escape_str($this->input->post('symbols'));
foreach ($symbol_arr as $k=> $val) {
        $DataARR = array( 
               "symbol" => $val,
                "created" => date('Y-m-d h:i:s A'),
        );
    $this->common_model->insert_batch($DataARR);
}