首页 > 解决方案 > 在不删除所有现有行的情况下将多个选择下拉列表更新到 mysql 数据库

问题描述

我必须将多选下拉列表更新到数据库中,但不删除所有现有行。
我有两张桌子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>

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

只是为了澄清事情。可以说我编辑下拉列表并仅选择OneandTwo和 remove 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 |
+-------------------+-------------------------+-------+

标签: phpmysqldatabase

解决方案


推荐阅读