0

我是 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);

//数据库

| 编号 | 姓名 | 选项1 | 选项2 | 选项3 | 选项4 |

4

1 回答 1

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]);

上面的代码不是特别优雅,但我希望它会对你有所帮助

于 2012-08-31T16:09:20.090 回答