CI - 帮助插入多个选择表单,每个表单都有多个选定选项

Posted

技术标签:

【中文标题】CI - 帮助插入多个选择表单,每个表单都有多个选定选项【英文标题】:CI - Help Inserting Multiple Select Form with each having Multiple Selected Options 【发布时间】:2016-08-23 07:34:10 【问题描述】:

我正在尝试将玩家列表插入到表格同一行的多个列中。这些玩家按位置分组,因此他们有自己的选择表单,我希望检索并插入到单个 SQL 中(我还使用 javascript 来限制选择的选项数量。

Table: contests_rosters
id, player1, player2, player3, player4

player1 and player2 will be from select name "forwards[]"
player3 and player4 will be from select name "defenders[]"

问题是当我在控制器中调用 post 时,我不知道如何操作数组,以便我可以进行一次插入而不是多次插入。

你能帮帮我吗? -- 另外,如果您能告诉我帖子的返回内容并解释操作步骤以便我理解,将不胜感激。

VIEW - 选项由 ajax 检索

Select Forward
<br/><br/>
<fieldset>
    <select name="search_forward" id="players_forwards" multiple size="25" style="width:500px">
    </select>

    <a href="JavaScript:void(0);" id="btn-add_forward">Add &raquo;</a>
    <a href="JavaScript:void(0);" id="btn-remove_forward">&laquo; Remove</a>

    <select name="forwards[]" id="players_forwards_selected" multiple size="2" style="width:500px">
    </select>

</fieldset>
<br /><br />

Select Defender
<br/><br/>
<fieldset>
    <select name="search_defender" id="players_defenders" multiple size="25" style="width:500px">
    </select>

    <a href="JavaScript:void(0);" id="btn-add_defender">Add &raquo;</a>
    <a href="JavaScript:void(0);" id="btn-remove_defender">&laquo; Remove</a>

    <select name="defenders[]" id="players_defenders_selected" multiple size="3" style="width:500px">
    </select>

</fieldset>
<br /><br />

控制器

$data1 = $this->input->post('forwards');
$data2 = $this->input->post('defenders');

.....manipulation, then insert into table

【问题讨论】:

【参考方案1】:

经过反复试验,我设法找到了以下解决方案。不确定这是否是最干净的解决方案,但它有效。很高兴听到您的想法。

控制器

$forwards_post = $this->input->post('forwards');
$defenders_post = $this->input->post('defenders');

$forwards = array(
            'player1'       =>      $forwards_post[0],
            'player2'       =>      $forwards_post[1]
        );

$defenders = array(
            'player3'       =>      $defenders_post[0],
            'player4'       =>      $defenders_post[1]
        );

$data_entry = array_merge($forwards, $defenders);

数组现在已准备好在模型中进行单次插入

$this->input('contests_rosters', $data_entry);

瞧。

【讨论】:

以上是关于CI - 帮助插入多个选择表单,每个表单都有多个选定选项的主要内容,如果未能解决你的问题,请参考以下文章

多个单选按钮选择

具有未知数量的复选框字段和多个操作的 Django 表单

在一个页面中使用带有多个 django 表单的 jQuery datepicker

Symfony 表单插入通过 Select2 选择的多个值

表单提交时显示单选按钮选择的名称

从Yii上的多个选择下拉列表中获取值以插入数据库