2012-01-16 13 views
0

これを行うより良い方法はありますか?設定されていない場合、大きなグループのチェックボックスの値を "0"に設定する

私は30個のチェックボックスを持つ単純なフォームを持っています。 彼らがチェックされていない場合は、限りPHPが懸念しているとして、彼らは(設定されていない)が存在しないので、私は直接このコード以下のデータベースを更新していますように私は、値を0に設定しています:

if(!isset($_POST['checkbox1'])) { 
    $_POST['checkbox1'] = '0'; 
} 

if(!isset($_POST['checkbox2'])) { 
    $_POST['checkbox2'] = '0'; 
} 

if(!isset($_POST['checkbox3'])) { 
    $_POST['checkbox3'] = '0'; 
} 

の場合彼らは値が1であることを確認して、部品が正常であることを確認します。

私は無駄にこれで遊んでみました:

foreach($_POST AS $key=>$value) { 
    if($value != '1') { $_POST[$key] = '0'; } 
} 
+0

この時点以降のデータはどうしますか?それはデータベースに行きますか?最初にオブジェクトを作成しますか? – Ben

答えて

1

どの程度

foreach (array('checkbox1', 'checkbox2', 'checkbox3') as $k) { 
    if (!isset($_POST[$k])) { 
     $_POST[$k] = '0'; 
    } 
} 
+0

ありがとうございますこれは私が探していたものです! – David

0

あなたは可能性が常に:

$MAX_CHECKS = 30; 

for($i=1; $i<=$MAX_CHECKS; $i++) 
{ 
    if(!isset($_POST['checkbox' . $i])) 
    { 
    $_POST['checkbox' . $i] = '0'; 
    } 
} 

しかしがあるかもしれないようにそれはそうここで深刻な問題。あなたは本当に何をしようとしていますか?

+0

ジョシュさん、ありがとうございましたが、私が探していたものと同じように、rfausakのソリューションを使いました。 – David

1

あなたの大きな問題は、あなたのフォームにあると思います。そのような名前の配列にあなたが検証する必要があるチェックボックスのグループを持っているなら、あなたはすべきグループにそれらを:

<input type="checkbox" name="myCheckBoxes[]" value="A" />Checkbox A<br /> 
<input type="checkbox" name="myCheckBoxes[]" value="B" />Checkbox B<br /> 
<input type="checkbox" name="myCheckBoxes[]" value="C" />Checkbox C<br /> 

<?php 
    if(!empty($_POST['myCheckBoxes'])) { 
     foreach ($_POST['myCheckBoxes'] as $checkBoxValue) { 
     echo $checkBoxValue; 
     } 
    } 
?> 
0

あなたは隠されたチェックボックスを先行し提出した方法でフォームを作成する場合チェックボックスフィールドと同じ名前で、その隠しフィールドに値0を設定すると、設定されているかどうかに関わらずPHPでチェックする必要はありません。

ここでは例を挙げています。上記のフォームで

<form name="test" method="POST" action="your_action.php"> 
    <input type="hidden" name="my_checkbox_1" value="0" /> 
    <input type="checkbox" name="my_checkbox_1" /><label>One</label> 
    <input type="hidden" name="my_checkbox_2" value="0" /> 
    <input type="checkbox" name="my_checkbox_2" /><label>Two</label> 
    <input type="hidden" name="my_checkbox_3" value="0" /> 
    <input type="checkbox" name="my_checkbox_3" /><label>Three</label> 
    <input type="submit" name="submit" value="OK"/> 

あなたが任意のチェックボックスをチェックせずに送信する場合、あなたは彼らの$ POST [「my_checkbox_x」]値が0にsetedしかし、あなたは、それらのいずれかを確認した場合、それは意志されます前回の隠し値を上書きして$ POST ['my_checkbox_x']の値が1に設定されます。

テーブル更新のために余分にチェックインする必要はありません。私はループでチェックする方が速いと思います。

ありがとう、

関連する問題