2011-01-07 29 views
6

PHPを使用して、複数のチェックボックスの名前またはIDをサブミット時に取得するにはどうすればよいですか?以下は例のフォームです。ありがとう。複数のチェックボックス名/ IDをPHPで取得

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <input type="checkbox" name="orange" id="orange"> 
    <input type="checkbox" name="apple" id="apple"> 
    <input type="checkbox" name="sky" id="sky"> 
    <input type="checkbox" name="sea" id="sea"> 
    <br> 
    <br> 
    <input type="submit" name="Submit" value="Submit"> 
</form> 

答えて

18

チェックボックスの値は、チェックボックスが選択されている場合のみ、フォームから送信されています。さらに、IDではなく名前の属性です。

PHPのチェックボックスを処理するいくつかの方法があります。

  1. はセット全体を配列として扱われるので、すべてのチェックボックスを角括弧の対に続く同じ名前を付けます。この場合、各チェックボックスに値を与えます。
  2. 各チェックボックスに異なる名前と値を付けます。
  3. 各チェックボックスに異なる名前を付けますが、値は付けないでください。

いずれの場合も、$ _POST配列にチェックボックス名が存在するかどうかを確認する必要があります。例えば

:各チェックボックスは別の名前と、このような明示的な値がある場合は、しかし、

if (isset($_POST['color'])) { 
    $colors = $_POST['color']; 
    // $colors is an array of selected values 
} 

<input type="checkbox" name="color[]" id="orange" value="orange"> 
<input type="checkbox" name="color[]" id="apple" value="apple"> 

これらのチェックボックスの値を取得するには

<input type="checkbox" name="orange" id="orange" value="orange"> 
<input type="checkbox" name="apple" id="apple" value="apple"> 

まだisset()を使用する必要があります。

if (isset($_POST['orange'])) { 
    // orange has been set and its value is "orange" 
} 

値を設定しない場合、デフォルト値は "on"ですが、選択されていない限り$ _POST配列には含まれないため、引き続きisset()を使用する必要があります。

4

あなたはidを得ることはありませんが、名前は$_POST配列(および$_REQUEST)に連想インデックスになります。注:クライアントによってチェックされた場合にのみ、アレイで利用可能になります。

<input type="checkbox" name="selection[]" value="orange"> 
<input type="checkbox" name="selection[]" value="apple"> 
<input type="checkbox" name="selection[]" value="sky"> 
<input type="checkbox" name="selection[]" value="sea"> 

が続いてPHPで$ _POST [ '選択']配列の反復処理:

if ($_POST['oragne'] == 'on')

9

あなたが入力に同じ名前を与える必要があります。

+0

単純に同じ名前を付けても、これは機能しません。配列として設定する必要があります: 'name =" selection [index] "' –

+0

はこの例を修正しました。また、私はあなたがインデックスを残すことができると思うし、彼らは自動的にインデックスされます。 –

+0

はい、あなたもそれを行うことができますが、彼は具体的に "名前"属性を保存するように依頼しました。インデックスはそれを代用することができます。 –

2

あなたは以下に似たそれらを構築する場合は、配列としてPHPに投稿するためにそれらを設定することができます。

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <input type="checkbox" name="box_group_1[oragne]" id="oragne"> 
    <input type="checkbox" name="box_group_1[apple]" id="apple"> 
    <input type="checkbox" name="box_group_1[sky]" id="sky"> 
    <input type="checkbox" name="box_group_1[sea]" id="sea"> 
    <br> 
    <br> 
    <input type="submit" name="Submit" value="Submit"> 
</form> 
<?php 
print_r($_POST['box_group_1']); 
?> 
関連する問題