我必须将多选下拉列表更新到数据库中,但不能删除所有现有行。
我有两个表num
和multipleselect
。我在下面列出了。
+--------+----------+
| num_id | num_name |
+--------+----------+
| 1 | One |
| 2 | Two |
| 3 | Three |
+--------+----------+
这是我要更新numid
值的表。
+-------------------+-------------------------+-------+
| multipleselect_id | multipleselecttrackerid | numid |
+-------------------+-------------------------+-------+
| 14 | 5 | 1 |
| 15 | 5 | 3 |
+-------------------+-------------------------+-------+
这是Edit
页代码
<?php
// PK table
$sqlNum = "SELECT * FROM num";
$resultNum = mysqli_query($con, $sqlNum);
// FK table
$sqlChildren = "SELECT numid FROM multipleselect WHERE multipleselecttrackerid = $URLiD";
$resultChildren = mysqli_query($con, $sqlChildren);
$selectedChildren = array_column(mysqli_fetch_all($resultChildren, MYSQLI_ASSOC), 'numid');
?>
<select name ="fm_multiple[]" multiple>
<?php
while($parent = mysqli_fetch_assoc($resultNum)){
$selectedNumId = $parent['num_id'];
$selectedNumName = $parent['num_name'];
$selected = in_array($selectedNumId, $selectedChildren) ? "selected='selected'": '';
echo "<option value='{$selectedNumId}' {$selected}>{$selectedNumName}</option>";
}
?>
</select>
...和输出。
<select name="fm_multiple[]" multiple="">
<option value="1" selected="selected">One</option>
<option value="2">Two</option>
<option value="3" selected="selected">Three</option>
</select>
到目前为止,一切都很好。现在,我想重新选择下拉菜单并更新到数据库。我想用现有行进行更新。我不想先删除所有行然后再插入。
我在复选框中有相同的问题,我可以使用隐藏值来实现。
只是澄清一下事情。
假设我编辑下拉菜单,仅选择One
和Two
并删除three
。
所以在表中我正在寻找这个,multipleselect_id
15
被删除并添加了16
来表示numid 2
+-------------------+-------------------------+-------+
| multipleselect_id | multipleselecttrackerid | numid |
+-------------------+-------------------------+-------+
| 14 | 5 | 1 |
| 16 | 5 | 2 |
+-------------------+-------------------------+-------+
不是这个。
+-------------------+-------------------------+-------+
| multipleselect_id | multipleselecttrackerid | numid |
+-------------------+-------------------------+-------+
| 16 | 5 | 1 |
| 17 | 5 | 2 |
+-------------------+-------------------------+-------+