- ベストアンサー
PHP記述修正方法
- PHP記述を修正して要求通りのHTML出力を行う方法について教えてください。
- 現在のPHP記述では、HTML出力が期待通りにならない問題があります。どのように修正すれば解決できるのか知りたいです。
- PHPの修正方法を教えてください。HTML出力時に閉じられていない引用符を解決する方法を教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
にわかだろうが何だろうが「プログラマ」だというなら、マニュアルを読みましょう。 http://www.php.net/manual/ja/language.types.string.php echo '<option value="' . $i . '"' . (($i == $year) ? ' selected="selected"' : '') . '>' . $i . '</option>';
その他の回答 (4)
- yambejp
- ベストアンサー率51% (3827/7415)
効率は悪いですが、こんな風にした方が見やすいかもしれません <?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」で問題ないでしょう (===で比較するとマッチしない)
細かい訂正ですが失礼します。 <?=$date?> に関して、「?>」直後の改行コードは削除されてしまうので正しいインデントで表示したければ <?=$date . "\n"?> や <?=$date . PHP_EOL?> とする必要があります。
そもそも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"」とする必要があります。
- play_with_you
- ベストアンサー率37% (112/301)
文字列中ではエスケープすればいいので "<option value=\"" . $i . … とするか、シングルクォートを使って '<option value="' . $i . … とするか。 ちなみに、「"selected"」じゃなくて「selected="selected"」です。
お礼
すいません。ちょっと時間がなくて皆様に甘えました。 ばっちりです! 本当にありがとうございました。