我是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 |
答案 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]);
上面的代码不是特别优雅,但我希望它能帮到你