-1

値に対応する列に 1 または 0 を追加するだけで、チェックボックスが選択されているかどうかを MySQL に挿入したいと考えています。以下に詳述する 0 に問題があります。

これはチェックボックスの例です

<input type='checkbox' name='class[]' value='mathhl' id="mathhl">

簡単にするために、これを追加しました

$classes = $_POST["class"];

チェックボックスの値をチェックする foreach ループを次に示します。

foreach($classes as $value) {
    if (!isset($value)) {
        $value = 0;
    }
    else {
        $value = 1;
    }
    echo $value;
}

何らかの理由で、0 ではなく 1 のみが返されます。私はPHPが初めてなので、これでどこが間違っているのか正確に知りたいです、ありがとう!

4

1 に答える 1

5

チェックされたチェックボックスのみがサーバーに送信されます。したがって、値が配列に存在しない場合、それはボックスがチェックされていないためです。

値を配列のキーにすることで、ロジックを簡素化できます。

<input type='checkbox' name='class[mathhl]' value='1' id="mathhl">

これで、ループする必要はありません$_POST['class']。代わりに、すべてのキーの配列を取得できます (これは既に知っているはずです)。

$keys = array( 'mathh1', 'mathh2', 'mathh3');

そして、デフォルト値 (たとえば 0) で配列を形成します。

$defaults = array_combine( $keys, array_fill( 0, count( $keys), 0));

$_POSTそして、配列を defaults 配列とマージします。

$results = array_merge( $defaults, $_POST['class']);

これで$results、チェックボックスがオンになっているかどうかに応じて、キーが列で値が 1 または 0 の連想配列が含まれます。誰かが投稿したいデータを投稿できるので注意してください$_POST.1と0だけではないかもしれません.

于 2012-08-04T18:54:23.197 に答える