CodeIgniter - 关于将复选框数组插入数据库的说明

时间:2012-08-31 14:46:04

标签: codeigniter

我是CodeIgniter的新手并使用数组。我试图将每个复选框的值放入数据库的同一行。我知道我需要遍历数组,但后来我不知道如何告诉它在数据库中的相应标题下写入值。这是我尝试过的,但它为所有选项写入数据库0。感谢任何人花时间来解决我的问题。

//视图

<input type="text" name="name" /> Name
<input type="checkbox" value="1" name="options[]" /> Option 1
<input type="checkbox" value="2" name="options[]" /> Option 2
<input type="checkbox" value="3" name="options[]" /> Option 3
<input type="checkbox" value="4" name="options[]" /> Option 4

//控制器

//require at least 1 checkbox
$this->form_validation->set_rules('name', 'Name', 'required');
$this->form_validation->set_rules('options[]', 'Options', 'required');

//not sure how to do this part, 
//some how get values to the corresponding "option"
$name = $this->input->post('name');
$option1 = $this->input->post('options[0]');
$option2 = $this->input->post('options[1]');
$option3 = $this->input->post('options[2]');
$option4 = $this->input->post('options[3]');

//insert to database
$this->load->model('add', 'add_model');
$this->add_model->create_person($name, $option1, $option2, $option3, $option4);

//数据库

| id |名字| option1 | option2 | option3 | option4 |

1 个答案:

答案 0 :(得分:1)

我个人会有不同的命名复选框,并且会在发送表单之前通过jQuery在视图中进行验证,但这里的代码将指向正确的方向。

当您提交表单选项时,数组将包含您在表单上选择的元素。如果没有选中复选框,则数组将为空,因此您的代码为:

$option3 = $this->input->post('options[2]');

会尝试获取空数组的第三个元素。

您需要遍历现有元素并将这些值分配给变量。 您可以使用以下代码执行此操作:

$myArr = array(1 => 0, 2 => 0, 3 => 0, 4 => 0);   //set all the variables to 0
foreach($_POST['options'] as $checked)          //loop throught the selected options
{
    $myArr[$checked] = $checked;                     //assign to corresponding array element                            
}

$this->add_model->create_person($name, $myArr[1], $myArr[2], $myArr[3], $myArr[4]);

上面的代码不是特别优雅,但我希望它能帮到你