2011-06-19 1 views
0

フォームからMySQL挿入用の複数のチェックボックスを持つフィールドセットがあります。異なる「名前」属性を持つチェックボックスの数をカウントするにはどうすればよいですか?

<fieldset id="my_checkboxes"> 

     <legend>My Checkboxes (Select at least 2)</legend> 

     <label for="checkbox1"> 
      <input type="checkbox" id="checkbox1" value="yes" name="the_checkbox" /> 
      CheckBox #1 
     </label> 

     <label for="checkbox2"> 
      <input type="checkbox" id="checkbox2" value="yes" name="the_checkbox2" /> 
      CheckBox #2 
     </label> 

    </fieldset> 

私は、各チェックボックスは、データベース内のそれ自身の列にデータを挿入するためのユニークなNAME属性を持つ各チェックボックスを持ってできるようにする必要があります。 (それ以外の場合は、それぞれの名前としてthe_checkbox[]を使用します)。

私の問題は、フォームを送信するために少なくとも2つのチェックボックスを選択させる必要があるということです。私はそれぞれに別々の名前を持っているので、それは名前でカウントして、私はもう次のコードを使用することはできません。

$checkboxcount = count($_POST['the_checkbox']); 
if($checkboxcount < 1) 
{ 
    $errors[] = $checkboxcount; 
} 

MY SQLステートメントは次のようになります。

$sql = "INSERT INTO $db_table(the_checkbox,the_checkbox2) values 
(
'".mysql_real_escape_string(stripslashes($_REQUEST['the_checkbox']))."', 
'".mysql_real_escape_string(stripslashes($_REQUEST['the_checkbox2']))."' 
)"; 

あなたはどちらかに私のためにお勧めしますどのようなA.名前を別にしてもチェックボックスを数えるか、またはB.同じ名前を保持しますが、何らかの形でデータをMySQLに別々の列名として挿入しますか?

+0

SQL文はどのように見えますか? –

+0

質問をSQL文で編集しました。 – Joe

+0

まず、要件に合ったマイケルの答えを受け入れるべきです。次に、あなたのコードのようにREQUESTを使うべきではありません。むしろ、チェックボックスがチェックされている場合にのみ、値を2番目の変数に入れるべきです。それ以外の場合は、一部のサーバーで問題が発生します。これは、CHECKEDボックスのみがフォームにポストされているためです。 +1マイケル – itsols

答えて

2

あなたは別の名前を維持することを好む場合は、このような何か:

$chkbox_count = 0; 
if (isset($_POST['the_checkbox']) && $_POST['the_checkbox'] == "yes") $chkbox_count++; 
if (isset($_POST['the_checkbox2']) && $_POST['the_checkbox'] == "yes") $chkbox_count++; 
// etc... 

を、私は通常、異なる値で、しかし、チェックボックスの関連グループに同じ名前を使用使用することを好むだろうが、道それらを直接SQL文字列に渡して、異なる名前のメソッドを少し簡単に扱えるようにします。

+0

パーフェクト!ありがとうございました。今は、Validateプラグインを使用してjQuery側でこれを検証できることを確認するだけです。 – Joe

+0

あなたの答えは正しいです。しかし、チェックされたボックスだけがサーバーに到達するので、「はい」という値をチェックする必要はないと思います。ですから、issetだけで十分です。 – itsols

関連する問題