<div><select name="languages_known[]" multiple="multiple">
<option value="1">UK</option>
<option value="2">EN</option>
<option value="3">HI</option>
<option value="4">AN</option>
</select>
</div>
<div>
<select name="languages_known[]" multiple="multiple">
<option value="1">UK</option>
<option value="2">EN</option>
<option value="3">HI</option>
<option value="4">AN</option>
</select>
</div>
&#13;
注意:多选框名称都相同,即languages_known []。 如果用户选择&#34; 1&amp; 2从第1个方框&#34;和&#34; 1,3&amp;来自第二盒的#4;#34;同时,在PHP?我必须将值保存在MySQL的两个不同的行中。像:
在第1行,列名&#34; input_val&#34;将包含1,2和 在第2行,列名&#34; input_val&#34;将包含1,3,4。
如果有另一个具有相同名称的多选框,将创建mysql第3行,如下所示: 在第3行,列名&#34; input_val&#34;将包含2,4等。
答案 0 :(得分:2)
输出将是:
$_POST['languages_known'][0] = 2;
$_POST['languages_known'][1] = 1;
$_POST['languages_known'][2] = 3;
$_POST['languages_known'][3] = 4;
因为使用multiple="multiple"
属性(以及[]
名称部分)会将所有值作为数组元素传递给PHP(因此在发布时不会覆盖任何值)。
然后,您可以通过接收页面上的array_walk
数组foreach
或$_POST['languages_known']
。
我必须将值保存在MySQL的两个不同的行中。
如果你必须将这两个信息保存到两个不同的行,只需重新构建两个表单名称,然后给每个单独的数组行:
<div><select name="languages_known[][]" multiple="multiple">
....
</div>
<div><select name="languages_known[][]" multiple="multiple">
....
</div>
然后会给你:
$_POST['languages_known'][0][0] = 2;
$_POST['languages_known'][0][1] = 1;
$_POST['languages_known'][1][2] = 3;
$_POST['languages_known'][1][3] = 4;
总的来说,我担心问题不是100%明确,我会用一些猜测来回答你,所以你应该heavily edit and improve your question。什么样的MySQL列,什么数据类型;详细信息, 详细信息 !
答案 1 :(得分:0)
<form method="post">
<select name="cars[0][]" multiple>
<option selected>test</option>
<option selected>test2</option>
<option>test3</option>
<option>test4</option>
</select>
<select name="cars[1][]" multiple>
<option>hai</option>
<option>hai2</option>
<option selected>hai3</option>
<option selected>hai4</option>
</select>
<input type="submit">
</form>
然后按如下方式阅读:$ _POST ['cars'] [0]用于第一组,$ _POST ['cars'] [1]用于第二组。基于此,我可以将值存储在不同的MySQL行上。
礼貌:How to distinguish between two multiple selection lists with same name