性格いい人が優勝

複数のチェックボックスのうちどれかを初期選択させ、ボタン押下後は選択保持をさせたいです。
片方のみならできるのですが、どなたかご教授いただけるとうれしいです。

現在のソースはこんな感じになっていて選択したものの保持はできるのですが、初期選択ができていません。よろしくおねがいします。

<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>

A 回答 (3件)

リファラをみて自分以外の指定のときは指定値を設定すること


もしくはセッションで調整すること。

そうでない場合は、値が一つも設定されていないデータをおくると
初期値が表示されます。
    • good
    • 0
この回答へのお礼

yambejpさん、回答ありがとうございます。

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

お礼日時:2009/12/21 09:28

たとえば、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があり、チェックされてない時」を区別できると思います。

こういうことでよろしいのでしょうか。

この回答への補足

D_modeさん、回答ありがとうございます。

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

補足日時:2009/12/21 09:21
    • good
    • 0

>複数のチェックボックスのうちどれかを初期選択



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

この回答への補足

説明不足ですみません。

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

補足日時:2009/12/18 15:37
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!