2011-06-22 12 views
1

配列にチェックボックスname = "box []"があります。 PHPを使って、submitイベントでチェックされていれば、「checked = 'checked'」とエコーすることによって、それらがチェックされていることを確認します。チェックボックスをオンにすると、配列が空のときに以前の配列値にジャンプします。

3番目のチェックボックスをオンにすると、3番目のチェックボックスまで配列が空であったため、値はサブミット後の最初のチェックボックスにジャンプします。同じですが、2番目と3番目のチェックボックスをチェックすると、サブミット後に1番目と2番目にジャンプします。これは私が使用しているコードです:

<form method="post"> 
    <input type="checkbox" name="box[]" value="true" <?php if ($box[0] == true) echo "checked='checked'"; ?>><br> 
    <input type="checkbox" name="box[]" value="true" <?php if ($box[1] == true) echo "checked='checked'"; ?>><br> 
    <input type="checkbox" name="box[]" value="true" <?php if ($box[2] == true) echo "checked='checked'"; ?>><br> 
    <p> 
    <input type="submit" value="Submit"> 
</form> 

はでそれを試してみてください。 http://experiencerapanui.com/selecttest.php

私は、チェックボックスをオフにする場合はチェックボックスは、「偽」、またはどのような値で配列を埋めることはできますか?どのようにすればいいですか? *

** *** phant0mへ EDIT * ** * **

おかげで、私は解決策を考え出すために管理:

<form method="post"> 
    <input type="checkbox" name="box[]" value="1" <?php if (in_array("1", $box)) echo "checked='checked'"; ?>><br> 
    <input type="checkbox" name="box[]" value="2" <?php if (in_array("2", $box)) echo "checked='checked'"; ?>><br> 
    <input type="checkbox" name="box[]" value="3" <?php if (in_array("3", $box)) echo "checked='checked'"; ?>><br> 
    <p> 
    <input type="submit" value="Submit"> 
</form> 

チェックボックスに一意の値を設定すると、 $ box []という配列の値が見つかると、ボックスはチェックされたものとしてマークされます。

+0

解決方法:あなた自身で解決策を見つけた場合は、自分の質問への回答として投稿し、それを受け入れることをお勧めします。 – pinkgothic

答えて

1

チェックされているチェックボックスのみが$boxアレイに配置されているため、これは機能しません。

異なる名前または異なる値を使用して区別します。

これを考慮してください:2番目と3番目のチェックボックスをチェックします。 PHPでは、次のように表示されます:

$_POST['box'] = array(0 => "true", 1 => "true"); 

すべてのチェックボックスがチェックされていない限り、どのチェックボックスがチェックされているか分かりません。

+0

あなたの答え、phant0mありがとう。私は私の質問に作業コードを追加しました。 –

+0

また、name = "checkbox1"、name = "checkbox2"などを使用することもできます。 – phant0m

+0

forループでチェックできるように、配列にする必要があります。ご協力いただきありがとうございます。 –

0

POST値はissetで始まり、!empty($ array)はPOST値が配列かどうかを判断し、オプションが選択されていない場合はnull配列エラーを防止します。

& &!empty($ _ POST ['box'])に加えてis_array($ _ POST ['box'])を使用して配列の有効性を確認することもできます。

foreachループを使用しているときに入力を定義して入力することを容易にし、予防措置として必要に応じてサニタイズする可能性があるため、値フィールドには次の例で変数を使用します。

$ _POST配列もサニタイズすることをお勧めします。また、$ _POST配列を関数で囲むと、チェックボックスの入力からすべてが呼び出され、入力領域がきれいに保たれます。

<input type="checkbox" name="box[]" value="<?php echo $unique_id; ?>" <?php if(isset($_POST['box']) && !empty($_POST['box']) && in_array($unique_id, $_POST['box'])) echo "checked='checked'"; ?>> 

OR

<input type="checkbox" name="box[]" value="<?php echo $unique_id; ?>" <?php my_function(); ?>> 

優秀な質問と解決策!ポスト選択を保存するために配列メソッドを使用する例は比較的少なく、ここで提供されるものは関連性があり、何年後でも非常に役立ちます。

関連する問題