1

概述

我目前在使用 POST 数据的 PHP 中遇到问题。我有两个多选框(一个在屏幕左侧,另一个在右侧)。

然后,我使用数据库中的元素填充左侧的选项元素,并使用数据库中的数据填充右侧的选项。但是,当我打印 POST 数据时,我放入右侧多选框中的元素没有发布(如预期的那样)。

编码

      <form method="post" action="http://">
        <div class="left">
          <label for="left">Attributes to select:</label>
          <select size="5" name="allAtts" id="toSelect" multiple=""> 
            <option value="jay">jay</option>
            <option value="bill">bill</option>
          </select>
          <p><a href="#" class="btn add">Add</a></p>
        </div>
        <div class="right">
          <label for="right">Attributes to store:</label>
          <select size="5" id="selectedAtts" name="selectedAtts[]" multiple="">
            <option value="bob">bob</option>
            <option value="jim">jim</option>
            <option value="frank">frank</option>
          </select>
          <p><a href="#" class="btn remove">Remove</a></p>
        </div>
        <input type="submit" name="submit" value="Visualise!">
      </form>

我的问题

我希望将右侧多选框中的所有元素都 POSTED 以便我可以将它们存储到数据库中,这包括默认选项元素(那些由数据库放入的元素)。

进一步更新

注意:当我从左侧选择一个项目(使用我的按钮和 javascript)并将其移动到右侧时,会发布该特定数据(提交表单时)。我想要那个数据,还有右边多选的默认选项。

4

2 回答 2

1

如果您希望selectedAtts下拉列表中的每个选项都传递给$_POST数组,您需要实际选择它们。因此,将selected属性添加到每个选项。

      <select size="5" id="selectedAtts" name="selectedAtts[]" multiple="">
        <option selected value="bob">bob</option>
        <option selected value="jim">jim</option>
        <option selected value="frank">frank</option>
      </select>

当然,没有什么(就目前的代码而言)可以阻止用户取消选择任何或所有选项......

于 2013-03-02T19:29:25.897 回答
0

您可能希望将它们打印为隐藏输入,然后将其用于您的工作,而不是在发布的数据中使用正确的多选框。但请记住,如果您按照我建议的方式实施,高级用户可能会更改您的数据。

于 2013-03-02T18:50:09.130 回答