• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:このPHP記述を修正願います)

PHP記述修正方法

このQ&Aのポイント
  • PHP記述を修正して要求通りのHTML出力を行う方法について教えてください。
  • 現在のPHP記述では、HTML出力が期待通りにならない問題があります。どのように修正すれば解決できるのか知りたいです。
  • PHPの修正方法を教えてください。HTML出力時に閉じられていない引用符を解決する方法を教えてください。

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

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.3

にわかだろうが何だろうが「プログラマ」だというなら、マニュアルを読みましょう。 http://www.php.net/manual/ja/language.types.string.php echo '<option value="' . $i . '"' . (($i == $year) ? ' selected="selected"' : '') . '>' . $i . '</option>';

blueskyman
質問者

お礼

すいません。ちょっと時間がなくて皆様に甘えました。 ばっちりです! 本当にありがとうございました。

その他の回答 (4)

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

効率は悪いですが、こんな風にした方が見やすいかもしれません <?PHP $last_year=date("Y",strtotime("-1 year")); $year="2010"; for($i = 2002; $i <= $last_year; $i++){ $selected =($i == $year) ? ' selected="selected"' : ''; echo htmlspecialchars("<option value=\"{$i}\"{$selected}>{$i}</option>\n"); } ?> おそらく$yearは外部からくる文字列だと思いますので 本来であれば数値と文字列の比較を厳密にする処理を入れた方がいいのですが 今回のケースであれば「$i == $year」で問題ないでしょう (===で比較するとマッチしない)

noname#244856
noname#244856
回答No.4

細かい訂正ですが失礼します。 <?=$date?> に関して、「?>」直後の改行コードは削除されてしまうので正しいインデントで表示したければ <?=$date . "\n"?> や <?=$date . PHP_EOL?> とする必要があります。

noname#244856
noname#244856
回答No.2

そもそもHTMLタグをechoでそのまま出力するのは見にくいので避けたほうがいいです。 制御構造に関する別構文とecho短縮構文を使うのが一般的です。 http://php.net/manual/ja/control-structures.alternative-syntax.php http://php.net/manual/ja/function.echo.php <tr> __<td> ____日付:<?=$date?> __</td> </tr> <tr> __<td> ____<select name="ayear"> <?php for ($i = 2002, $this_year = idate('Y'); $i < $this_year; $i++): ?> <?php $selected = $i === $year ? ' selected' : ''; ?> ______<option value="<?=$i?>"<?=$selected?>><?=$i?></option> <?php endfor; ?> ____</select> __</td> </tr> ちなみにHTMLでは「selected」で正しい記述です。 XHTMLの場合は「selected="selected"」とする必要があります。

回答No.1

文字列中ではエスケープすればいいので "<option value=\"" . $i . … とするか、シングルクォートを使って '<option value="' . $i . … とするか。 ちなみに、「"selected"」じゃなくて「selected="selected"」です。

関連するQ&A

専門家に質問してみよう