由于某种原因,无法将数组中的复选框值存储到数据库中!

时间:2010-07-12 22:40:08

标签: arrays forms codeigniter post checkbox

嗨,我在这应该是一个简单的问题上度过了一段非常艰难的时期。

截至CodeIgniter 1.7,'$ this-> input-> post();'支持的数组但我不能因为某些原因将值输入数组。我有7个复选框存储到数组'services []'中,正如您在此示例视图中所看到的那样:

<?php $servicesdata = array (
         'name' => 'services[]',
         'value' => 'in_home_care',
         );
echo form_checkbox($servicesdata, set_checkbox('services[]', 'in_home_care', FALSE)); ?>

我很确定这是正确的时尚,因为如果出现问题,表单会很好地验证。现在我在存储值时开始出现问题。我有7列需要有某种价值...此时我并不在乎,但理想情况下它将是一个布尔值(二进制文件也可以正常工作)。以下是我到目前为止在控制器中所说的每个人都声称应该工作但是没有:

$c = new Client($servicesdata);
$c->first_name = $this->input->post('first_name', TRUE);
$c->in_home_care = $this->input->post('services[in_home_care]');

您可以看到我为一个完美工作的示例添加的字符串并插入VARCHAR类型,而数组不会进入数据库。我觉得好像我在这里遗漏了一些东西 - 即数组中的'值',但我不知道从哪里开始。任何帮助都会非常感激,因为我可以上班的唯一方法就是牺牲我的复选框验证! :(

3 个答案:

答案 0 :(得分:1)

如果未选中复选框,则不会将复选框的值输入$ _POST数组。这可能是你遇到问题的地方。

有两种解决方法。默认情况下选中一个框,或使用如下的HTML(这可能是也可能不是最佳实践/有效,但过去曾为我工作过。)

<input type="hidden" name="services" value="foo" />
<input type="checkbox" name="services" value="in_home_care" />

如果未选中该框,则名称值“services”的值“foo”将传递给$ _POST数组。

答案 1 :(得分:0)

首先,你的形式有一些冗余(我认为)。您可以在数组中设置复选框的属性,包括是否选中它:

$servicesdata = array (
         'name'    =>  'services[]',
         'value'   =>  'in_home_care',
         'checked' =>  FALSE,
         );
echo form_checkbox($servicesdata);

其次,因为您在数组中命名它,所以在分配给另一个变量后需要访问该对象:

$checkbox_array = $this->input->post('services');
$service_type=$checkbox_array[0];//will give you 'in_home_care', [1] would be next in array and so on

答案 2 :(得分:0)

在数据库中存储这些选项的一种方法是从中创建一个字符串并存储它。

  

$ this-&gt; input-&gt; post('colors')? $ colors = implode(' - ',$ this-&gt; input-&gt; post('colors')):$ colors ='';

检查是否在colors数组中实际检查了任何内容。如果是这样,请创建一个由破折号分隔的数组值中的字符串。否则将空白分配给颜色。

然后在读完db字符串之后:

  

$ profile_data [ '颜色'] =爆炸( ' - ',$行级别&GT;颜色);

然后,您可以将这些值反馈到表单输入中。