1

我正在为提交到我的网站的故事创建一个类别部分。我在我的 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);

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

4

2 回答 2

3

首先,您需要确保选择标签以数组方式命名:

<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);
于 2013-05-13T02:43:12.100 回答
2

我最终在没有 foreach 循环的情况下解决了这个问题。

首先,我写错了我的 html 选择标签。要让它选择多个值,您必须在类的末尾添加 [] 和一个多标签……就像这样。

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

然后在 php 中,它必须是 json 编码才能正确放置在数据库中......就像这样......

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

谢谢你的帮助!我希望这对将来的其他人有所帮助!:)

于 2013-05-13T22:13:55.287 回答