我有一个列表多选,这是代码:
<form method="post" action="">
<select name=thematique[] multiple>
<option value="1"> MIE </option>
<option value="2"> Migration </option>
<option value="3"> Réunification familiale </option>
</select>
<button type="submit" class="button" name="categoriser">Catégoriser</button>
</form>
我的问题是如果我选择MIE + Migration +Réunificationfamiliale,那么我的数据库中有3行用于相同的ID。 我想有一行将插入所有选项(0 1 2或3)。
$id_struct=$_POST['id_struct'];
$thematique=$_POST['thematique']);
foreach($thematique as $item) {
$string= $item.' ';
echo $string;
$bdd->exec("INSERT INTO categorisation SET id_thematique=$string
WHERE id_struct=$id_struct");
}
PS:id_thematique是外键。
答案 0 :(得分:1)
1)
您需要在选择框中添加VALUE
属性。
2)不要处理INSERT query
AS UPDATE query
您的选择框
<select name=thematique[] multiple>
<option value="MIE"> MIE </option>
<option value="Migration"> Migration </option>
<option value="Reunification_familiale"> Reunification familiale </option>
</select>
你的php文件插入三个单独的字段
<?php
foreach ($_POST['thematique'] as $thematique)
{
///your insert code//
$bdd->exec("INSERT INTO categorisation (`thematique`) VALUES ('".$thematique."'");
}?>
答案 1 :(得分:1)
你可以使用thematique作为对象数组:
$thematiqueArray = array(0=>'MIE', 1=>'Migration', 2=>'Réunification familiale');
设置你的html选项元素:
<option value=0>MIE</option>
<option value=1>Migration</option>
<option value=2>Réunification familiale</option>
和你的POST类似:
$thematique=$_POST['thematique']);
foreach($thematique as $key => $value) {
$item = $thematiqueArray[$key];
echo $item;
}
答案 2 :(得分:0)
一种解决方案是为您的选择提供base2值。像1,2,4,8等...然后你可以将所选的值加起来,并知道选择了哪些。但这只有在你不需要其他地方的价值时才有效。