代码之家  ›  专栏  ›  技术社区  ›  Seb

停止禁用和选定的选项在表单中发送空值

  •  0
  • Seb  · 技术社区  · 6 年前

    所以这里出现了一个小问题,尝试了很多不同的解决方案,但最终总是向数据库发送一个空值。所以我得到了一个下拉框,里面有两个值和一个永远不能发帖子的值。所以,如果你在从下拉菜单中选择一个值之前意外地点击了“oppdater”按钮,我不希望它被发送,但现在它确实被发送了,只是在数据库中添加了一个空白值。例子:

                    <form action="" method="post">
                        <input type="hidden" name="id" value="' . $row['id'] . '">
                        <select name="status2" class="endre-status">
                            <option selected="selected" disabled="disabled">Change status</option>
                            <option value="Done">Done</option>
                            <option value="Pending">Pending</option>
                        </select>
                        <input type="submit" name="insert2" value="Oppdater">
                    </form>
    

    在这里您可以看到,我已经选择并禁用了它,这意味着当我使用isset()检查时,它不会被发送,但它仍然会发送,并在我的数据库中放置一个空值。

    下面是使用下拉列表中的新值更新数据库的代码。

    if (isset($_POST['insert2']))
    {
        $status2 = $_POST['status2'];
        $id = $_POST['id'];
    
        $sql2 = ("UPDATE test3 SET status='$status2' WHERE id='$id'");
    
        if (mysqli_query($conn, $sql2)) {
        header("Location: index.php");
        exit;
    } else {
        echo "Error: " . $sql2 . "<br>" . mysqli_error($conn);
    }}
    

    下面是它的外观:

    enter image description here

    我也尝试过将disabled选项的值设置为“0”并使用empty()进行检查,但它仍然会将“0”发送到数据库。如果有人能帮我,那就太好了。谢谢您。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Fariz Aliyev    6 年前

    如果您的选项是静态的,您可以检查它的值是否来自您的选项?

    铟数组 功能可以帮助您

    例如:

    $options = array("Done","Pending");
    if (in_array($_POST['status2'], $options)) {
    
        2
  •  1
  •   cchajar    6 年前

    在线:

    <option selected="selected" disabled="disabled">Change status</option>
    

    你提到过 selected 因此,默认情况下,第一个选项将作为selected选项返回,它返回0似乎是合乎逻辑的。 建议的解决方案: 设置断点 insert2 按钮并将下拉框留空,然后检查返回值。最后,尝试阻止代码端通过控制语句(如 If