2013-05-13 82 views
1

我正在处理提交到我的网站的故事的类别部分。我有一个html选择在我的html中进行,我使用codeigniter函数提交给数据库。它正在提交给数据库,但似乎有一个小问题...... select只抓取所选的最后一个值。我需要将所有选中的值输入到数据库中,以便日后可以将其拖出。多选html将多值插入到数据库中

这是我使用的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

我最终解决了这个没有foreach循环。

首先,我写我的html选择标签错了。为了选择多个值,您必须在课程末尾添加[]和多点标签......就像这样。

<select multiple="multiple" class="multi" name="wGenre[]"> 

,然后它必须JSON编码被放置在数据库中正确......像这样的PHP ...

$this->genre = json_encode($this->input->post('wGenre')); 

感谢您对您的帮助!我希望这能帮助未来的其他人! :)

2

首先,你需要确保选择标签被命名为阵列方式:

<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); 
+0

不幸的是,没有奏效。看来这个foreach没有正确构建。我尝试切换$ select_vals $ this-> input-> post('wGenre')来查看是否可行。它的确如此,但它仍然只保存最后的值而不是所有的值 – zazvorniki 2013-05-13 18:48:38