获取从数据库 codeigniter 选中的复选框值

Getting check box values as checked from database codeigniter

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

<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

我将模型编辑为:

public function edit($id)
    {
    $sometext = $this->input->post('text');
        $data=array(
        'Some_text'=>json_encode(implode(",", $sometext)),
        );
        $this->db->set($data);
        $this->db->where('User_id',$id);
        $this->db->update('tbl_check');
        $query = $this->db->get('tbl_check');
        return $query->row();
        }

并且编辑工作正常..

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

<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

有时使用框架中的函数只会使它变得完全不必要并且更脏

<input type="checkbox" name="text[]" value="text1" <?php echo ($yourVar == 'text1' ? 'checked' : null); ?>>

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

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

查看:

<?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 

试试这个....

使用标准的 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_checkbox() 确定是否输出 checked="checked" 从而显示您的字段是否选中。

set_checkbox() 的第三个参数决定了你的复选框的初始状态是否checked/not-checked .如果第一次加载表单时第三个参数的计算结果为 TRUE,则复选框将被勾选;如果计算结果为 FALSE,则不会被标记。

因此,当编辑来自 table 的数据时,使用控制器从 table 获取数据并将其传递给表单。在您的表单中,在 set_checkbox().

的第三个参数中测试来自 table 的数据

在我上面的示例中,FIELDNAME 的数据在 table 中存储为“1”或“0”。

加载编辑表单时,SET_CHECKBOX第三个参数测试,"Is the data from the table empty?"如果有数据,!empty()returnsTRUE,导致set_checkbox() 将默认状态设置为已选中。

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