将多个选择下拉列表更新到mysql数据库,而不删除所有现有行

时间:2018-10-28 12:19:22

标签: php mysql database

我必须将多选下拉列表更新到数据库中,但不能删除所有现有行。
我有两个表nummultipleselect。我在下面列出了。

+--------+----------+
| 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>

到目前为止,一切都很好。现在,我想重新选择下拉菜单并更新到数据库。我想用现有行进行更新。我不想先删除所有行然后再插入。
我在复选框中有相同的问题,我可以使用隐藏值来实现。

只是澄清一下事情。 假设我编辑下拉菜单,仅选择OneTwo并删除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 |
+-------------------+-------------------------+-------+

0 个答案:

没有答案