【问题标题】:Multi select html inserting multi values into database多选html将多个值插入数据库
【发布时间】:2013-05-13 01:46:42
【问题描述】:

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

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

【问题讨论】:

    标签: php html sql codeigniter html-select


    【解决方案1】:

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

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

    【讨论】:

    • 不幸的是,这不起作用。似乎 foreach 构造不正确。我尝试切换 $select_vals $this->input->post('wGenre') 以查看是否可行。确实如此,但它仍然只保存最后一个值而不是所有值
    【解决方案2】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-04-18
      • 1970-01-01
      • 2013-11-21
      • 2013-04-13
      • 2015-02-02
      • 1970-01-01
      • 2022-07-28
      • 1970-01-01
      • 2015-07-27
      相关资源
      最近更新 更多