0

これは簡単なように思えますが、検索してもわかりません。PHP を使用して、いくつかのフィールドをブール スイッチとして設定する MySQL データベースを更新しています。サイトのトリガーはチェックボックスです。ユーザーがチェックボックスをオンにすると値は 1 に設定され、オフにすると値はゼロになります。問題は、フォームを送信すると、チェックボックスが設定されているとデータベースが正常に更新されますが、フィールドの値がゼロに更新されず、単に無視されることです。変数が実際にゼロに設定されていることを確認するために、設定されていないときに値をエコーアウトしました。テキストボックスをクリアして何も送信しようとすると、同様の問題が発生します。MySQL は単純にそれを無視し、フィールドをクリアしません。何か不足していますか?

私が使用しているコードの例を次に示します。

<?php
if ($_POST) {   
    if (isset($_POST['box1'])) {
        $box1 = $_POST['box1'];
    }
    else {
        $box1 = 0;
    }
    $query = "UPDATE table SET box1 = '{$box1}'";
    $result = mysqli_query($dbc, $query);
}
    ?>

<form method="post" action="">
    <input type="checkbox" name="box1"> Box 1
</form>
4

2 に答える 2

0

現時点では、配列内に値が渡されない場合、アクションは発生しません。

次のことを考慮してください...

...
$box1=0;

if ($_POST) {
    if (isset($_POST['box1'])) {
        $box1 = $_POST['box1'];
    }
}
    $query = "UPDATE boxtest SET box1 = $box1";
    $result = mysqli_query($dbc,$query);
    ?>

<form method="post" action=""/>
    <input type="checkbox" name="box1" value="1"/> Box 1
    <input type="submit"/>
</form>

または(私の前のコメントによると)

<input type="hidden" name="box1" value="0" />
<input type="checkbox" name="box1" value="1"/>
于 2013-01-10T19:57:25.490 に答える
0

<input type="checkbox" name="box1">

する必要があります

<input type="checkbox" name="box1" value="1">

box1データベースのデータ型は、データ型としてフィールドに何も格納できないため、INT設定されていなくても、データ型0で保存されます。0INT

于 2013-01-10T18:40:37.897 に答える