获取从数据库 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() 的第三个参数来评估您现有的价值。
我正在尝试将选中的复选框值插入到我的数据库中。我使用 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() 的第三个参数来评估您现有的价值。