阻止禁用和选定的选项以表格形式发送空白值

时间:2019-02-16 10:48:04

标签: php sql forms post phpmyadmin

这里有一个小问题,尝试了许多不同的解决方案,但最终总是向数据库发送空值。所以我得到了一个包含两个值和一个值的下拉列表,该值永远不会被允许进行POST。因此,如果您在从下拉菜单中选择一个值之前不小心单击了“ 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

我也尝试将禁用选项的值设置为“ 0”并使用empty()检查,但是它仍然向数据库发送“ 0”。如果有人可以帮助我,那将非常好。谢谢。

2 个答案:

答案 0 :(得分:1)

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

in_array 功能可以帮助您

例如:

$options = array("Done","Pending");
if (in_array($_POST['status2'], $options)) {

答案 1 :(得分:1)

在线:

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

您已经提到了selected,因此默认情况下,第一个选项将作为选择的选项返回,并且看起来它返回0是合乎逻辑的。 建议的解决方案: 在insert2按钮上设置一个断点,并将下拉列表留空,然后检查返回的值。最后尝试阻止代码端通过诸如If

之类的控制语句发送该值