• 締切済み

セレクト文

下記のセレクト文に配列をセットしたいのですが、”onchange”を使った2段階?にするとエラーになってしまいます。 <html> <head> <body> <?php $selected[] = array(); unset($selected); $selected[$***[ "t" ][ "VALUE" = "SELECTED"; print("<select name=\"t\" onchange="if(t.value==1){s1.style.display='inline';s2.style.display='none'; }else{s1.style.display='none';s2.style.display='inline';}">") print("<option selected> print("<option value=1>1  print("<option value=2>2 print("<</select> $selected[] = array(); unset($selected); $selected[$***[ "s1" ][ "VALUE" ]] = "SELECTED"; print("<select name=\"s1\" style=display:none>") print("<option value=a>a") print("<option value=aa>aa") print("</select>") $selected[] = array(); unset($selected); $selected[$***[ "s2" ][ "VALUE" ]] = "SELECTED"; <select name=\"s2\" style=display:none>") <option value=b>b") <option value=bb>bb") print("</select>") ?> </body> </head> </html> よろしくお願いします。

みんなの回答

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

>echoでくくるとonchangeの効果がなくなってしまうのでしょうか? 今回の件は単純にクォーテーションをエスケープしてないからだと 思います。 ×echo("<select name=\"t\" onchange="changeFunc(this)">"); ○echo("<select name=\"t\" onchange=\"changeFunc(this)\">"); やはりヒアドキュメントなどをつかって、表示部分と処理部分を分けたほうが ボンミスが減るのでいいですよ。 <?php $shiyou = $_REQUEST[ "t" ]; $meter = $_REQUEST[ "METER" ]; if(isset($_REQUEST[ "s1" ])){ $meter = $_REQUEST[ "s1" ]; }else{ $meter = $_REQUEST[ "s2" ]; } $selected["t"][$maker["t"]["VALUE"]] =" SELECTED"; $selected["s1"][$kata["s1"]["VALUE"]] =" SELECTED"; $selected["s2"][$kata["s2"]["VALUE"]] =" SELECTED"; print <<<eof <html> <head> <script language="javascript"> function changeFunc(t){ var s1=t.form.s1; var s2=t.form.s2; switch(t.value){ case "1": s1.style.display='inline'; s2.style.display='none'; break; case "2": s1.style.display='none'; s2.style.display='inline'; break; default: s1.style.display='none'; s2.style.display='none'; } } window.onload=function(){ var obj=document.forms[0].elements["t"]; changeFunc(obj); } </script> </head> <body> <FORM ACTION="{$_SERVER['PHP_SELF']}" METHOD="POST" ENCTYPE="MULTIPART/FORM-DATA"> <select name="t" onchange="changeFunc(this)"> <option value=""></option> <OPTION VALUE="1"{$selected["t"]["1"]}>1</option> <OPTION VALUE="2"{$selected["t"]["2"]}>2</option> </select> <select name="s1" style="display:none"> <OPTION VALUE="aa"{$selected["s1"]["aa"]}>aa</option> <OPTION VALUE="aaa"{$selected["s1"]["aaa"]}>aaa</option> </select> <select name="s2" style="display:none"> <OPTION VALUE="bb"{$selected["s2"]["bb"]}>bb</option> <OPTION VALUE="bbb"{$selected["s2"]["bbb"]}>bbb</option> </select> <p> <INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE="登 録">  </p> </form> </body> </html> eof; ?>

popoaja
質問者

補足

バッチリです。ありがとう御座います。 これが、3つとか4つの分岐になった場合もこの方法で良いのでしょうか?本当に申し訳ないのですが、その場合も教えて頂けないでしょうか、よろしくお願いします。

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

PHP的にもJavascript的にもHTML的にもなんかぼろぼろで、 一つ一つ整理していった方がよいですね。 こんかいそもそもPHPが必要なのでしょうか? ざっと見た感じこんな感じのHTMLですみますが・・・ <html> <head> <script language="javascript"> function changeFunc(t){ var s1=t.form.s1; var s2=t.form.s2; if(t.value==1){ s1.style.display='inline'; s2.style.display='none'; }else{ s1.style.display='none'; s2.style.display='inline'; } } </script> </head> <body> <form> <select name="t" onchange="changeFunc(this)"> <option selected> <option value=1>1  <option value=2>2 </select> <select name="s1" style="display:none"> <option value=a>a <option value=aa>aa </select> <select name="s2" style="display:none"> <option value=b>b <option value=bb>bb </select> </form> </body> </html>

popoaja
質問者

補足

すみません。たしかにボロボロでした。 教えていただいた記述で再度ためしてみたのですが、エラーになってしまいます。 エラー箇所は 『echo("<select name=\"t\" onchange="changeFunc(this)">");』 の所です。echoでくくるとonchangeの効果がなくなってしまうのでしょうか?おかしいところがあれば教えて下さい。よろしくお願いします。 <?php $shiyou = $_REQUEST[ "t" ]; $meter = $_REQUEST[ "METER" ]; if(isset($_REQUEST[ "s1" ])){ $meter = $_REQUEST[ "s1" ]; }else{ $meter = $_REQUEST[ "s2" ]; } ?> <html> <head> <script language="javascript"> function changeFunc(t){ var s1=t.form.s1; var s2=t.form.s2; if(t.value==1){ s1.style.display='inline'; s2.style.display='none'; }else{ s1.style.display='none'; s2.style.display='inline'; } } </script> </head> <body> <FORM ACTION="<?php echo( $_SERVER[ "PHP_SELF" ] ) ?>" METHOD="POST" ENCTYPE="MULTIPART/FORM-DATA"> <?php $selected[] = array(); unset($selected); $selected[$maker[ "t" ][ "VALUE" ]] = "SELECTED"; echo("<select name=\"t\" onchange="changeFunc(this)">"); echo("<option selected>"); echo("<OPTION VALUE=\"1\"" . $selected["1"] . ">1"); echo("<OPTION VALUE=\"2\"" . $selected["2"] . ">2"); echo("</select>"); $selected[] = array(); unset($selected); $selected[$kata[ "s1" ][ "VALUE" ]] = "SELECTED"; echo("<select name=\"s1\" style="display:none">"); echo("<OPTION VALUE=\"aa\"" . $selected["aa"] . ">aaa"); echo("<OPTION VALUE=\"aaa\"" . $selected["aaa"] . ">aaa"); echo("</select>"); $selected[] = array(); unset($selected); $selected[$kata[ "s2" ][ "VALUE" ]] = "SELECTED"; echo("<select name=\"s2\" style="display:none">"); echo("<OPTION VALUE=\"b\"" . $selected["b"] . ">b"); echo("<OPTION VALUE=\"bb\"" . $selected["bb"] . ">bb"); echo("</select>"); ?> </form> <p> <INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE="登 録">  </p> </body> </html>

関連するQ&A