• 締切済み

チェックボックスの初期選択と選択保持

複数のチェックボックスのうちどれかを初期選択させ、ボタン押下後は選択保持をさせたいです。 片方のみならできるのですが、どなたかご教授いただけるとうれしいです。 現在のソースはこんな感じになっていて選択したものの保持はできるのですが、初期選択ができていません。よろしくおねがいします。 <html> <body> <form name="form" method="post"> <?php test1() ?> test1 <?php test2() ?> test2 <?php test3() ?> test3<br><br> <input type="submit" name="button" value="button"> </form> <?php function test1(){ if ($_POST['test1']){ echo "<input type=\"checkbox\" name=\"test1\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test1\">"; } } function test2(){ if ($_POST['test2']){ echo "<input type=\"checkbox\" name=\"test2\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test2\">"; } } function test3(){ if ($_POST['test3']){ echo "<input type=\"checkbox\" name=\"test3\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test3\">"; } } ?> </body> </html>

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

リファラをみて自分以外の指定のときは指定値を設定すること もしくはセッションで調整すること。 そうでない場合は、値が一つも設定されていないデータをおくると 初期値が表示されます。

cubekun
質問者

お礼

yambejpさん、回答ありがとうございます。 初心者のためセッションなどの知識がありませんが調べてみようと思います。

  • D_mode
  • ベストアンサー率26% (4/15)
回答No.2

たとえば、test1だけ初期状態でチェックしておきたいなら function test1() {   if (array_key_exists('test1', $_POST)){     if ($_POST['test1']){       echo "<input type=\"checkbox\" name=\"test1\" checked>";     }else{       echo "<input type=\"checkbox\" name=\"test1\">";     }   }else{     echo "<input type=\"checkbox\" name=\"test1\" checked>";   } } ※インデントに全角を使ってますのでこのままコピペはしないでください このようにすると 「POSTの中にtest1がない時(=初期状態)」と 「POSTの中にtest1があり、チェックされている時」と 「POSTの中にtest1があり、チェックされてない時」を区別できると思います。 こういうことでよろしいのでしょうか。

cubekun
質問者

補足

D_modeさん、回答ありがとうございます。 やりたいことはあっています。ですが、教えて頂いたソースで試してみたところ最初のif文でelseに入ってしまい、チェックされてもされなくても全てデフォルトのチェックになってしまいうまくいきませんでした。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>複数のチェックボックスのうちどれかを初期選択 意味がわからないのですが、これはユーザーが選択しなくても 初期値がついているということですか? そのロジックはどういうものですか? 説明が必要だと思います。

cubekun
質問者

補足

説明不足ですみません。 画面起動時に複数あるチェックボックスのうち指定したチェックボックスにだけデフォルトチェックを入れたいということです。 その後、チェックボックスの選択をしなおしたものを保持させておきたいのです。

関連するQ&A

専門家に質問してみよう