我正在处理提交到我网站的故事的类别部分。我在我的html中有一个html选择,我使用codeigniter函数提交到数据库。它正在提交到数据库,但似乎有一个小问题...选择只是抓取所选的最后一个值。我需要将所有选择的值输入到数据库中,以便我可以在以后将它们拉出来。
这是我正在使用的HTML。
<select multiple class="multi" name="wGenre">
<option value="Action/Adventure">Action/Adventure</option> <option value="Angst">Angst</option>
<option value="Crime">Crime</option>
</select>
然后这就是我在模型中所拥有的。
$this->title = $this->input->post('wTitle');
$this->genre = $this->input->post('wGenre');
$this->db->insert('story_tbl', $this);
现在,我认为问题在于我的数据库。我最初将该字段设置为枚举,但这不起作用,因为它是一个或另一个选择,我需要有倍数。所以我把它作为一个文本字段尝试,它只是没有抓住一切。说实话,我很茫然,需要一些帮助。 :)
答案 0 :(得分:3)
首先,您需要确保select标签以数组方式命名:
<select multiple="multiple" class="multi" name="wGenre[]">
然后要获取多重选择的所有值,您可以执行以下操作将值保存在数组中!
$this->title = $this->input->post('wTitle');
$select_vals = array();
foreach($this->input->post('wGenre') as $val){
$val.' - '; // Used as a delimiter for later use
array_push($select_vals, $val);
}
$this->genre = $select_vals;
$this->db->insert('story_tbl', $this);
答案 1 :(得分:2)
我最终在没有foreach循环的情况下解决了这个问题。
首先,我正在写我的html select标签错误。要选择多个值,你必须在类的末尾添加[]和多个标签......就像这样。
<select multiple="multiple" class="multi" name="wGenre[]">
然后在php中它必须被json编码才能正确放入数据库......就像这样......
$this->genre = json_encode($this->input->post('wGenre'));
感谢您的帮助!我希望将来能帮到别人! :)