Php 从数据库codeigniter获取复选框值

Php 从数据库codeigniter获取复选框值,php,codeigniter,checkbox,checked,Php,Codeigniter,Checkbox,Checked,我正在尝试将复选框值作为选中项插入到数据库中。。我使用内爆方法将其作为字符串插入。它成功插入了值。但我获取复选框值“选中”的条件不起作用 <label>Some text</label> <input type="checkbox" name="text[]" value="text1" <?php echo set_checkbox('text', $row->Some_text)== 'text1' ? "checked" : "";?>&g

我正在尝试将复选框值作为选中项插入到数据库中。。我使用内爆方法将其作为字符串插入。它成功插入了值。但我获取复选框值“选中”的条件不起作用

<label>Some text</label>
<input type="checkbox" name="text[]" value="text1" 
<?php echo set_checkbox('text', $row->Some_text)== 'text1' ? "checked" : "";?>>text1
<input type="checkbox" name="text[]" value="text2" 
<?php echo set_checkbox('text', $row->Some_text)== 'text2' ? "checked" : "";?>>text2
<input type="checkbox" name="text[]" value="text3" 
<?php echo set_checkbox('text', $row->Some_text)== 'text3' ? "checked" : "";?>>text3 
<input type="checkbox" name="text[]" value="text4" 
<?php echo set_checkbox('text', $row->Some_text)== 'text4' ? "checked" : "";?>>text4

编辑工作正常。

您未正确使用
设置复选框。请看:不要在条件语句中使用它。你的问题没有提供太多信息,但我想你想要这样的东西:

<input type="checkbox" name="text[]" value="text1" 
<?php echo set_checkbox('text[]', 'text1');?>>text1
<input type="checkbox" name="text[]" value="text2" 
<?php echo set_checkbox('text', 'text2');?>>text2
<input type="checkbox" name="text[]" value="text3" 
<?php echo set_checkbox('text', 'text3');?>>text3 
<input type="checkbox" name="text[]" value="text4" 
<?php echo set_checkbox('text', 'text4');?>>text4
>text2
>文本4

有时候,使用框架中的函数只会使它变得完全不必要和肮脏


只需从模型中获取数据。并将其传递到复选框页面

$data['check_box_data']=$query->row_array();
$this->load->view('page',$data);
视图:


标签>一些文本
>文本2

使用标准CodeIgniter功能:

form_checkbox('fieldname', '1', set_checkbox('fieldname', '1', (TEST YOUR DB DATA HERE)));
示例

form_checkbox('fieldname', '1', set_checkbox('fieldname', '1', (!empty($data_from_db))));
说明
set\u checkbox()
确定是否输出
checked=“checked”
,从而将字段显示为选中标记或未选中

set_checkbox()的第三个参数确定复选框的初始状态是否选中。如果第一次加载表单时第三个参数的计算结果为
TRUE
,则复选框将被勾选;如果计算结果为
FALSE
,则不会对其进行标记

因此,在编辑表中的数据时,使用控制器从表中获取数据并将其传递给表单。在表单中,在set_checkbox()的第三个参数中测试表中的数据

在上面的示例中,FIELDNAME的数据以“1”或“0”的形式存储在表中

加载编辑表单时,SET_CHECKBOX的第三个参数测试“表中的数据是否为空?”如果有数据,
!empty()
返回TRUE,导致set_checkbox()将默认状态设置为CHECKED


关键是使用set_checkbox()的第三个参数来计算您的现有值。

这有点让人困惑,但是,您是否尝试过将set_checkbox和=='text'包装在()中?像这样
echo(设置复选框('text',$row->Some_text)='text1')?“选中”:“;?>我想你应该包装所有内容:
echo((设置复选框('text',$row->一些文本)='text1')?“选中”:“;?>
<?php 
    $c_box1=$c_box2=$c_box3='';
    $chk_data=explode(',',$chk_box_data); // $chk_box_data is which is from DB
    foreach($chk_data as $list)
    {
      //chk_box1_value1,2,3 are original check box values
      if($list=='chk_box1_value'){$c_box1='checked';}
      if($list=='chk_box2_value'){$c_box2='checked';}
      if($list=='chk_box3_value'){$c_box3='checked';}
    }
?>

label>Some text</label>
<input type="checkbox" name="text[]" value="text1" 
<?php echo $c_box1;?>>text1
<input type="checkbox" name="text[]" value="text2" 
<?php echo $c_box2;?>>text2
<input type="checkbox" name="text[]" value="text3" 
<?php echo $c_box3;?>>text3 
form_checkbox('fieldname', '1', set_checkbox('fieldname', '1', (TEST YOUR DB DATA HERE)));
form_checkbox('fieldname', '1', set_checkbox('fieldname', '1', (!empty($data_from_db))));