无法在codeigniter中获取复选框的值

时间:2015-01-05 09:04:13

标签: php mysql codeigniter checkbox

我试图插入多个复选框,但无法在codeigniter 2中获取它们的值

这是我在查看

中的代码
   <!-- Multiple Checkboxes (inline) -->
                    <div class="form-group">
                      <div class="col-md-4">
                        <label class="checkbox-inline" for="checkboxes-0">
                          <input type="checkbox" name="checkboxes[]" id="checkboxes-0" value="22">
                          Пентхаус
                        </label>
                          <br>
                    <!-- Text input-->
                    <div class="form-group">
                      <div class="col-md-8">
                      <input id="cena" name="cena[]" type="text" placeholder="Въведи цена" class="form-control input-md">

                      </div>
                    </div>

                        <label class="checkbox-inline" for="checkboxes-1">
                          <input type="checkbox" name="checkboxes[]" id="checkboxes-1" value="21">
                          Гараж/Паркомясто
                        </label>
                    <br>
                                            <!-- Text input-->
                    <div class="form-group">
                      <div class="col-md-8">
                      <input id="cena" name="cena[]" type="text" placeholder="Въведи цена" class="form-control input-md">

                      </div>
                    </div>

这是我的模特:

    public function InsertCheckbox() {

           $property_typesRequest = $this->input->post('checkboxes');
            foreach($property_typesRequest as $value){
            $this->db->insert_batch('property_type_details', $property_typesRequest);

            }

}
在Controller中

我只是使用它:

        $this->estate_m->InsertCheckbox();

这将在数据库中插入0,当我var_dump $ property_typesRequest theres显示bool(false)时。我无法得到复选框的值......

修改...

我尝试编辑我的代码,但仍然没有结果:

  public function edit()/*this is  controller */
{  
    $data=array('column_name'=>$this->input->post('checkboxes');
    $result=$this->estate_m->InsertCheckbox($data);
    if($result==true)
    {
            echo "Success";
    }
    else
    {
            echo "Fail";
    }

}
public function InsertCheckbox($data) /*this is Model */
    {    
    $this->db->insert('property_type_details', $data);
    return ($this->db->affected_rows() != 1 ) ? false : true;

}

使用此编辑的代码总是给我Succes

2 个答案:

答案 0 :(得分:1)

表单提交的值应为多维数组 为了实现这一点,您的表单输入应该是多维的。

对于insert_batch()函数,数组应该是多维的。 在数组中,每个键必须是db表中的字段名,value必须是表单输入值。 因此,改变表格结构,如下面的数组。

array(
   array(
     'checkboxes' => 'checkboxe value' ,
     'cena' => 'cena values'
   ),
   array(
     'checkboxes' => 'checkboxe value' ,
     'cena' => 'cena values'
   )
); 

表单输入应如下所示:

<input name="data[1][checkbox_columnname]" type="checkbox" value="21">Пентхаус
<input name="data[1][textbox_columnname]" type="text">

<input name="data[2][checkbox_columnname]" type="checkbox" value="22">Гараж/Паркомясто
<input name="data[2][textbox_columnname]" type="text">

模型不应该有foreach循环。 只需传递如下数据。

$data=$this->input->post('data');

$this->db->insert_batch('mytable', $data); 

答案 1 :(得分:0)

请在模型中使用此代码。

 public function InsertCheckbox() {

            $property_typesRequest = $this->input->post('checkboxes');
            foreach($property_typesRequest as $value){
              $data['columnename'] = $value;
              $this->db->insert('tablename', $data); 
            }

}

希望它插入数据库

谢谢