• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プルダウンの初期値に関して2)

プルダウンの初期値に関して2

このQ&Aのポイント
  • プルダウンの前回値が取得できない問題について
  • ソースコードの記述が間違っている可能性があります
  • 初期値に前回の値を指定する方法について教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • smileeeen
  • ベストアンサー率70% (21/30)
回答No.3

現在のソースを見る限りprint文の中に<?php ?>が出てきていますね。 No.2さんが仰っているように出力されたHTMLソースを見て、 実際に出力したいHTMLソースとどこが違うのかから考えるとよいと思います。 アドバイスとして変数はシングルクォーテーションで囲むと展開されません。 下記の条件式は「$out_goto」という文字列と 「自席」という文字列の比較となり常にfalseとなります。 if('$out_goto'=='自席'){ また下記の書き方はエラーとなります。 echo ' selected=?'selected?''; シングルクォーテーションの中でシングルクォーテーションの場合は 「?」ではなくバックスラッシュ(ウィンドウズでは\)を使ってエスケープします。 echo ' selected=\'selected\'';

その他の回答 (3)

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.4

printで書いてるのが非常に読みにくく、正直どうやっても読めない。 貴殿が間違った個所が判らないのもそれが原因の一つ。 ※なので#2ではそもそも読む気がしなかった。 で、下のように書き変えて確認してみました。 結果、#3さんの指摘がPHPコードとして致命的ですが、HTMLとして致命的なものとして そもそも<form>の開始タグがない、自席のoptionタグが ">"で閉じらてていないというものがありました。 ちなみに、HTMLとして見た場合致命的ではないですが、タグ名、タグの属性名は小文字で書くことが一般的です。(xhtmlでは小文字で書かなければいけない仕様のため、xhtmlでなくても小文字で書きましょうというルールです) タグの属性を括るのは、'(シングルクォーテーション)ではなく"(ダブルクォーテーション)で書くのが仕様です。(ブラウザが'でも許容して動作しますが、本来の仕様では"で書かなければなりません。) あとは、今後PHPでテンプレートエンジンを使うことも考えて、PHP上からHTMLを出力する際にはPHPコード部分は最小範囲(たとえば下のような形)で指定する方が良いでしょう。 見やすくなる上に編集もしやすい、HTMLエディタで編集できる、デザイナーと連携する場合に連携しやすい、など多くの利点があります。 <table border=1 width="70%" cellpadding="10" cellspacing="0"> <form> <tr> <td align="center"> <table border="0" width="100%"> <td width="20%"> </td> <td width="60%" align="center"> </td> <td width="20%" align="right"> </td> </table> <font color="#FF0000"><b></b></font><br /> <table border=0 cellpadding="5"> <tr> <td width="20%"> </td> </tr <tr> <td width="10%"> </td> </tr> <tr> <td nowrap><font size="3"><b>【行  先】</b></font></td> <td nowrap size="30"><input name="text_note" style="width:100%" value="<?php echo $out_goto;?>"></input> </td> <td><select name="am_note" onchange="ChangeSelection(this.form, this)" style="width:145px;"> <option value=" "> <option value="自席" style="background-color:#FFFFFF; color:#3366FF" <?php if($out_goto=="自席"){echo "selected=\"selected\"";}?>>自席 <option value="離席" style="background-color:#3366FF; color:#FFFFFF" <?php if($out_goto=="離席"){echo "selected=\"selected\"";}?>>離席 </select> </td> </tr> <tr> <td nowrap><font size="3"><b>【戻り時間】</b></font></td> <td size="18"> </td> <td> </td> </tr> <tr> <td> </td> <td><font size="2"> </font></td> </tr> </table> <input type="submit" name="exec" value="登録する"> <input type="hidden" name="no" value="<?php echo $out_no;?>"> <input type="hidden" name="busyo" value="<?php echo $out_busyo;?>"> </td> </tr> </form> </table>

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.2

全然コードを見ていませんが。 出力されたHTMLをブラウザの[ソースを表示]機能で確認しましたか? <select> <option value="0">hogehoge1</option> <option value="1">hogehoge2</option> <option value="2" selected="selected">hogehoge3</option> <option value="3">hogehoge4</option> </select> のような状態にちゃんとなってます? 出力が間違ってるから、ちゃんと動かないのでは? 間違った出力の個所から、ちゃんと出力するためにはどこを直せば、とPHPソースコードを辿れば間違った個所が判断できると思いますが。

SANA_999
質問者

補足

申し訳ありません。 全体は以下のような格好で記述してあります。 おっしゃる通り、ソースの表示で記述が崩れてしまっていますが、 どこをどのように直したらよいかがわからず。。。 <TABLE BORDER=1 WIDTH="70%" CELLPADDING="10" CELLSPACING="0"> <TR> <TD ALIGN="center"> <TABLE BORDER="0" WIDTH="100%"> <TD WIDTH="20%"> </TD> <TD WIDTH="60%" ALIGN="center"> </TD> <TD WIDTH="20%" ALIGN="right"> </TD> </TABLE> <FONT COLOR="#FF0000"><B></B></FONT><BR> <?php print("<TABLE BORDER=0 CELLPADDING='5'>\n"); print("<TR>\n"); print("<TD WIDTH='20%'>\n"); print("</TD>\n"); print("</TR>\n"); print("<TR>\n"); print("<TD WIDTH='10%'>\n"); print("</TD>\n"); print("</TR>\n"); print("<TR>\n"); print("<TD NOWRAP><FONT SIZE='3'><B>【行  先】</B></FONT></TD>\n"); print("<TD NOWRAP SIZE='30'><input name='text_note' style='width:100%' VALUE=$out_goto></input>\n"); print("</TD>\n"); print("<TD><select name='am_note' ONCHANGE='ChangeSelection(this.form, this)' style='width:145px;'> <option value=' '>                      <option value='自席' style='background-color:#FFFFFF; color:#3366FF' <?php echo $out_goto; if('$out_goto'=='自席'){ echo' selected=?'selected?''; } ?> 自席 <option value='離席' style='background-color:#3366FF; color:#FFFFFF' if('$out_goto'=='離席'){ echo' selected=?'selected?''; }> 離席 </select>\n"); print("</TD>\n"); print("</TR>\n"); print("<TR>\n"); print("<TD NOWRAP><FONT SIZE='3'><B>【戻り時間】</B></FONT></TD>\n"); print("<TD SIZE='18'>\n"); print("</TD>\n"); print("<TD>\n"); print("</TD>\n"); print("</TR>\n"); print("<TR>\n"); print("<TD>\n"); print("</TD>\n"); print("<TD><FONT SIZE='2'>\n"); print("</FONT></TD>\n"); print("</TR>\n"); print("</TABLE>\n"); print("<INPUT TYPE='submit' NAME='exec' VALUE='登録する'>\n"); print("<INPUT TYPE='hidden' NAME='no' VALUE='$out_no'>\n"); print("<INPUT TYPE='hidden' NAME='busyo' VALUE='$out_busyo'>\n"); ?> </TD> </TR> </FORM> </TABLE>

noname#111181
noname#111181
回答No.1

申し訳ありませんが、FORMタグやループの部分など、肝心なスクリプトが抜けているので何ともお答えしようがありません。 前回値を補足しようとするなら、配列 $_GETや$_POSTでとることができますよ。

関連するQ&A