1

4つのチェックボックスがあり、続行するには1にチェックマークを付ける必要があります(ただし、さらにチェックマークを付ける場合があります)。そこで、4つのチェックボックスを作成しました。

    I have blue skin
    <input class="cbox" type="checkbox" name="skin" value="Yes" /><br>
    I have blue hair
    <input class="cbox" type="checkbox" name="hair" value="Yes" /><br>
    I have blue eyes
    <input class="cbox" type="checkbox" name="eyes" value="Yes" /><br>
    I have blue teeth
    <input class="cbox" type="checkbox" name="teeth" value="Yes" /><br>

このデータを保存したいと思っています。しかし、まず、これらの少なくとも1つがチェックされていることを確認します。

if(isset($_POST['sent']) && !(isset($_POST['skin']) || isset($_POST['hair']) || isset($_POST['eyes']) || isset($_POST['teeth'])))

これらすべてのリストを保存したいので、これがこれを達成するための最良の方法であるかどうかはわかりません。配列を使うのが一番いい方法だと思います。

    I have blue skin
    <input class="cbox" type="checkbox" name="blue[]" value="skin" /><br>

そして、これを内包したテキストフィールドに保存します。新しくて、これを達成する方法がわかりません。私が読んでいるチュートリアルはやや混乱しています。この方法でそれを行うと、代わりに配列が空であるかどうかを確認できます(4つの分離されたissetではありませんか?)。そして、$ _ POSTを使用して配列をどのように処理しますか?

4

3 に答える 3

3

などを使ってみてname="appearance[skin]"name="appearance[hair]"確認してみてください
if(empty($_POST['appearance']))。空の場合、チェックボックスは選択されていません。

その後、アクセス$_POST['appearance']['skin']などを行うか、を使用
foreach($_POST['appearance'] as $attribute=>$value)して選択を繰り返すことができます。

于 2013-03-06T20:19:01.067 に答える
0

すべてのフィールドを配列に入れてから、その配列をループしてフラグを設定できます。

$checkboxes = array('skin', 'hair', 'eyes', 'teeth');

$oneTicked = false;
foreach($checkboxes as $checkbox)
{
    if(!empty($_POST[$checkbox]))
    {
        $oneTicked = true;
        break;
    }
}

次に、trueかどうかを確認でき$oneTickedます。

于 2013-03-06T20:25:47.780 に答える
0

結局、私は次のことをしました(たくさんの突っ込みがそれを機能させました)。

I have blue skin
    <input class="cbox" type="checkbox" name="blue[]" value="skin" /><br>

同じ方法を使用して4つすべて。それで...

if(isset($_POST['sent']) && empty($_POST['blue'])) {
 $bluedata = mysql_escape_string(implode(",",$_POST['blue']));
}

次に、その文字列をデータベースに書き込みました。

これが誰かを助けることを願っています。

于 2013-03-06T22:02:27.850 に答える