dポイントプレゼントキャンペーン実施中!

昨日こちらのURL『http://oshiete.goo.ne.jp/qa/6477112.html』にて質問させていただきました。
ご回答を締め切らせていただいたため、誠に勝手ながら新たに質問の方させていただきました。

PHP検索フォーム、検索時の選択内容を保持する方法にて、先日ご回答いただいた
下記のコードを基本として利用しているのですが、

<?
//checkbox
if($_REQUEST["test_a"]=="1") $checked["test_a"]=" checked";
if($_REQUEST["test_b"]=="1") $checked["test_b"]=" checked";

//radio
if(isset($_REQUEST["test_c"])) $checked["test_c"][$_REQUEST["test_c"]]=" checked";

//select
if(isset($_REQUEST["test_d"])) $selected["test_d"][$_REQUEST["test_d"]]=" selected";

print <<<eof
<form>
<input type="checkbox" name="test_a" value="1"{$checked["test_a"]}>A
<input type="checkbox" name="test_b" value="1"{$checked["test_b"]}>B
<input type="radio" name="test_c" value="1"{$checked["test_c"][1]}>C-1
<input type="radio" name="test_c" value="2"{$checked["test_c"][2]}>C-2
<input type="radio" name="test_c" value="3"{$checked["test_c"][3]}>C-3
<select name="test_d">
<option value="">---</option>
<option value="1"{$selected["test_d"][1]}>D-1</option>
<option value="2"{$selected["test_d"][2]}>D-2</option>
<option value="3"{$selected["test_d"][3]}>D-3</option>
</select>
<input type="submit" value="go">
</form>
eof;
?>



複数選択のチェックボックスがある場合の方法をご存じの方いらっしゃいましたら、
是非ともご教授お願い致します。


複数チェックボックスは、
<input type="checkbox" name="bungu[0]" value="鉛筆" >鉛筆
<input type="checkbox" name="bungu[1]" value="定規" >定規
<input type="checkbox" name="bungu[2]" value="色鉛筆" >色鉛筆
<input type="checkbox" name="bungu[3]" value="ペン" >ペン
<input type="checkbox" name="bungu[4]" value="絵具" >絵具
<input type="checkbox" name="bungu[5]" value="ハサミ" >ハサミ
<input type="checkbox" name="bungu[6]" value="ボールペン" >ボールペン
というようなものを利用しています。

A 回答 (2件)

>リセットボタンはjavascriptにされてますか??



「リセット」というのは・・・
「初期値にもどす」ことと「データが空の状態にする」
の二重の意味をもちます。

前者であれば
<input type="reset" value="reset">
でやるのが正しいでしょう。

後者であれば考え方がいろいろありますが私の場合は
<input type="submit" value="reset" name="s">
のように名前付きのsubmitをして
<?PHP
if($_REQUEST["s"]=="reset") header("Location:{$_SERVER['SCRIPT_NAME']}");
?>

のようにしてパラメータなしで自分をよみなおします。
(もちろん場合によってはjavascriptでやるのも有効でしょうけど)

>"0"が頭にくると動作しない

うーん・・・
<option value="01"{$selected["month_kara"]["01"]}>01</option>
とクォーテーションでくくればよくないですか?
    • good
    • 0
この回答へのお礼

ありがとうございます!!
今回のリセットは、「データが空の状態にする」という状態が正しいです!!
前者の場合、初期値イコールselectedした値になるようでしたので。
コードまで明記いただき、ありがとうございます!!

"0"の件についても、補足ありがとうございました!!
今回は0を消すことで解決しましたが、多分今後必要になりそうなので…補足いただき大変助かりました!!

本当、ご丁寧に回答いただき今回の質問+αのことが解決できました!!
ありがとうございました!!

お礼日時:2011/02/01 17:36

あぁ、ちょっと気にはなっていたんですが、やっぱりそこも必要でしたか・・・


ちょっとした応用でいけます。
(ちなみにinputにつかうnameにはキーをふらなくてもPHPが勝手に
判断してくれます)

<?
if(is_array($_REQUEST["bungu"])){
foreach($_REQUEST["bungu"] as $val){
$checked["bungu"][$val]=" checked";
}
}
print <<<eof


<form>
<input type="checkbox" name="bungu[]" value="鉛筆"{$checked["bungu"]["鉛筆"]}>鉛筆
<input type="checkbox" name="bungu[]" value="定規"{$checked["bungu"]["定規"]}>定規
<input type="checkbox" name="bungu[]" value="色鉛筆"{$checked["bungu"]["色鉛筆"]}>色鉛筆
<input type="checkbox" name="bungu[]" value="ペン"{$checked["bungu"]["ペン"]}>ペン
<input type="checkbox" name="bungu[]" value="絵具"{$checked["bungu"]["絵具"]}>絵具
<input type="checkbox" name="bungu[]" value="ハサミ"{$checked["bungu"]["ハサミ"]}>ハサミ
<input type="checkbox" name="bungu[]" value="ボールペン"{$checked["bungu"]["ボールペン"]}>ボールペン
<input type="submit" value="go">
</form>

eof;
?>

この回答への補足

早速ご回答をもとに使わせていただきました!!
無事動作もして、大変満足しております♪♪

>>(ちなみにinputにつかうnameにはキーをふらなくてもPHPが勝手に
判断してくれます)
おぉ、こんな豆知識(?)知らずにずっとキーふってたので、感動しました!!


補足というか、更に質問になってしまいますが、
リセットボタンはjavascriptにされてますか??


いじってて気づいたのですが、value=数字の時に、
<option value="01"{$selected["month_kara"][01]}>01</option>
"0"が頭にくると動作しないこともわかりました!!

補足日時:2011/01/28 13:56
    • good
    • 0
この回答へのお礼

あ、ありがとうございます!!!
本当、何とお礼言っていいのかわかりませんが、
本当に助かりました!!!

これから試させていただきます!!
先にお礼を伝えたかったので・・・失礼します!!

お礼日時:2011/01/27 19:29

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