php - 在不删除所有现有行的情况下将多个选择下拉列表更新到 mysql 数据库
问题描述
我必须将多选下拉列表更新到数据库中,但不删除所有现有行。
我有两张桌子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
andTwo
和 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 |
+-------------------+-------------------------+-------+
解决方案
推荐阅读
- arrays - Data structur similar to Array
- php - How to display "Post Updated" label in front of post title wordpress
- android - Stream multiple langauges audio from a playing video on a local live-streaming server
- c# - 在这里,我正在尝试使用 Xero 和 .net 获取特定员工的所有数据
- python - 如何检查网站中是否存在Specifc txt并保存链接-python?
- etherpad - 在 iframe 中调用 Etherpad 的正确格式是什么
- react-native - 如何禁用状态栏旋转
- pdf - 以书面形式将超链接添加到现有 PDF 文件中
- assembly - 'ret' 指令在不同 UEFI 实现上的行为是否不同?
- python - python搜索json以获取嵌套键值并获取路径