我试图在数据库中输入多个选择值。这是我的演示代码:
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的最后一个值。如何解决这个问题。
答案 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)
答案 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