在Codeigniter中将多个选择值插入数据库

时间:2016-01-06 07:43:41

标签: php codeigniter

我试图在数据库中输入多个选择值。这是我的演示代码:

https://jsfiddle.net/wuarv946/

我的控制器:

public function create()
{
    $data= array(
        'name' => $this->input->post('name'),
        'foods' => $this->input->post('foods')
    );
    $this->food_model->add_food($data);
}

我的模特:

public function add_food($data)
{
    $this->db->insert('order_items', $data);
}

它只插入select的最后一个值。如何解决这个问题。

7 个答案:

答案 0 :(得分:1)

尝试循环食物清单。

我的控制器:

public function create()
{
    $food_list = $this->input->post('foods');
    foreach($food_list as $food) {
    $data= array(
        'name' => $this->input->post('name'),
        'foods' => $food
    );
    $this->db->insert('order_items', $data);
    }
}

答案 1 :(得分:1)

在选择name="foods[]"

中进行更改

尝试像这样的控制器

public function create()
{
    $foods = $this->input->post('foods');
    $name= $this->input->post('name');
    $data = array();
    foreach( $foods as $k => $v){
      $data[$k]['name']=$name;
      $data[$k]['foods']=$v;
    }

    $this->food_model->add_food($data);
}

答案 2 :(得分:1)

试试这个.. 使用name="foods[]"更改选择下拉列表名称。

<select name="foods[]" class="selectpicker" multiple title="Choose Foods" multiple data-max-options="2" data-live-search="true">
  <option value="1">Mustard</option>
  <option value="2">Ketchup</option>
  <option value="3">Relish</option>
</select>

控制器

public function create()
{
    $data= array(
        'name' => $this->input->post('name'),
        'foods' => implode(",",$this->input->post('foods')) // Store foods with comma separate 
    );
    $this->food_model->add_food($data);
}

答案 3 :(得分:1)

你的表单html代码有两个错误。

1)您尚未指定表单发布方法,因此默认使用"get"方法,并且您尝试使用post()获取值。

2)您已设置选择倍数,但未将其名称设为数组foods[]

如下所示:

<form method="post">
<div class="col-md-6">
<input type="name" placeholder="Enter name" class="form-control">
<select name="foods[]" class="selectpicker" multiple title="Choose Foods" multiple data-max-options="2" data-live-search="true">
  <option value="1">Mustard</option>
  <option value="2">Ketchup</option>
  <option value="3">Relish</option>
</select>
</div>
<button class="btn btn-primary">Submit</button>
</form>

并按以下方式更改控制器:

public function create()
{
    $foods = $this->input->post('foods');
    $name= $this->input->post('name');
    $data = array();
    foreach( $foods as $key => $value){
      $data[$key]['name']=$name;
      $data[$key]['foods']=$value;
    }

    $this->food_model->add_food($data);

希望这能清除你并解决你的问题。

答案 4 :(得分:0)

这样做

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

Codeigniter Inserting Data

答案 5 :(得分:0)

您需要批量插入,例如

$data = array(
   array(
      'title' => 'My title' ,
      'name' => 'My Name' ,
      'date' => 'My date'
   ),
   array(
      'title' => 'Another title' ,
      'name' => 'Another Name' ,
      'date' => 'Another date'
   )
);

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

// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'), ('Another title', 'Another name', 'Another date')

答案 6 :(得分:0)

无循环插入总是一个好主意。正确的方法是使用关联数组数组并使用Yati YNRHARYANA YNRHARYANA Active Record函数插入它们。

这是一个例子:

insert_batch