多选html将多个值插入数据库

时间:2013-05-13 01:46:42

标签: php html sql codeigniter html-select

我正在处理提交到我网站的故事的类别部分。我在我的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);

现在,我认为问题在于我的数据库。我最初将该字段设置为枚举,但这不起作用,因为它是一个或另一个选择,我需要有倍数。所以我把它作为一个文本字段尝试,它只是没有抓住一切。说实话,我很茫然,需要一些帮助。 :)

2 个答案:

答案 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'));   

感谢您的帮助!我希望将来能帮到别人! :)