【问题标题】:Getting check box values as checked from database codeigniter获取从数据库 codeigniter 检查的复选框值
【发布时间】:2015-12-10 02:43:15
【问题描述】:

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

<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 和 == 'text' 包含在 () 中?像这样echo (set_checkbox('text', $row-&gt;Some_text)== 'text1') ? "checked" : "";?&gt;
  • 我猜你应该把所有东西都包起来:echo ((set_checkbox('text', $row-&gt;Some_text)== 'text1') ? "checked" : "");?&gt;

标签: php codeigniter checkbox checked


【解决方案1】:

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

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

【讨论】:

  • 这个方法叫什么,不用if语句就能做到这一点?
【解决方案2】:

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

$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 

试试这个....

【讨论】:

    【解决方案3】:

    使用标准 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() 的第三个​​参数决定了你的复选框的初始状态是选中还是不选中。如果第一次加载表单时第三个参数评估为TRUE,则复选框将被勾选;如果计算结果为FALSE,则不会被标记。

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

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

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

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

    【讨论】:

      【解决方案4】:

      您错误地使用了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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-09
        • 2017-06-03
        • 2013-03-09
        • 2012-08-31
        相关资源
        最近更新 更多