gpt4 book ai didi

php - 将内爆多重选择更新到数据库中

转载 作者:行者123 更新时间:2023-11-29 07:07:33 24 4
gpt4 key购买 nike

我在更新数据库时遇到问题,例如,它碰巧将旧值旁边的新值添加到数据库中

  • 当前数据库标签:tag1、tag2
  • 表单 GET 标签:[tag1][tag2]
  • 表单编辑标签:[tag1][tag2][tag3][tag4]
  • 更新的数据库标签:tag1、tag2、tag1、tag2、tag3、tag4

    GET
    $query = "SELECT * FROM data WHERE id = $id";
    $edit = mysqli_query($dbc, $query);
    while($row = mysqli_fetch_assoc($edit)){$tags = $row['tags'];}
    POST
    $tags = implode(",",$_POST['tags'];
    $query = "UPDATE data SET tags= '$tags' WHERE id = $id";

    <form method="post" action="">
    <select id="tags" name="tags[]" multiple="multiple">
    <?php foreach ($tags as $tag) {echo "<option value'$tag' selected>$tag</option>";} ?>
    <option>tag1</option>
    <option>tag2</option>
    <option>tag3</option>
    <option>tag4</option>
    </select>
    <button type="submit" name="update">Submit</button>
    </form>

最佳答案

您的代码存在一些问题,例如:

  • $tags不是一个数组。请参阅您的 while() 中的以下声明循环,

    $tags = $row['tags'];

    所以你不能在 foreach 中使用它像那样循环。使用 explode() 函数分割字符串并获取数组中的标签,如下所示:

    $tags = explode(",",$row['tags']);

    然后使用这个$tags表单中的数组,如下所述。

  • 此处有语法错误,

    $tags = implode(",",$_POST['tags'];
    ^ missing closing )
  • 即使您将标签作为数组获取(如上所述),您也不必使用那个 foreach循环要么,它会不必要地在您的 <select> 中附加额外/冗余的标签。元素。更好地使用 in_array() 检查 $tags 中是否存在标签值的函数是否数组并相应地选择它

  • value <option> 中缺少属性标签。

  • 放置 SELECT低于UPDATE的操作操作,否则您将从 SELECT 获取旧标签值即使您使用表单更新标签,也可以进行操作。

所以你的代码应该是这样的:

if(isset($_POST['update'])){
$tags = implode(",",$_POST['tags']);
$query = "UPDATE data SET tags= '$tags' WHERE id = $id";
mysqli_query($dbc, $query);
}

$query = "SELECT * FROM data WHERE id = $id";
$edit = mysqli_query($dbc, $query);
while($row = mysqli_fetch_assoc($edit)){
$tags = explode(",",$row['tags']);
}

<form method="post" action="index.php">
<select id="tags" name="tags[]" multiple="multiple">
<option value="tag1"<?php if(in_array('tag1', $tags)){ echo ' selected="selected"'; } ?>>tag1</option>
<option value="tag2"<?php if(in_array('tag2', $tags)){ echo ' selected="selected"'; } ?>>tag2</option>
<option value="tag3"<?php if(in_array('tag3', $tags)){ echo ' selected="selected"'; } ?>>tag3</option>
<option value="tag4"<?php if(in_array('tag4', $tags)){ echo ' selected="selected"'; } ?>>tag4</option>
</select>
<button type="submit" name="update">Submit</button>
</form>

关于php - 将内爆多重选择更新到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41078665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com