• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPのセレクトボックスの初期値について)

PHPのセレクトボックスの初期値の設定方法

このQ&Aのポイント
  • PHPのセレクトボックスで初期値を設定する方法について解説します。
  • 配列を使用してセレクトボックスの値を指定し、条件に応じて初期値を設定することができます。
  • 具体的なコード例を示しながら、初期値の設定方法について詳しく説明します。

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

  • ベストアンサー
回答No.4

> 初期値が取得できたときはその初期値と一致した配列の値を表示する、、、 > 初期値が取得できなかった場合は配列の決まった値を初期表示する、というようなことがしたいのです つまり$start_time[$j]の値が取得できない場合ということですよね? それなら$start_time[$j]が取得できなかった場合のコードを書けば済むだけだと思いますが。 例えばPHPは緩いですから、取得できなかったら意図的に$start_time[$j]を作り上げてしまえば、後のコードも変更する必要ありませんよね。

k-karasu
質問者

お礼

回答ありがとうございます。 なるほど、そのような方法があったわけですね。 取得比較したときに一致しなければ・・・という使い方ができることで後述も変更なくいけました。 ありがとうございました。。

その他の回答 (3)

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

初期値は$start_time[$j]で与えられているんですよね。それで <option value="0" <?php if($start_time[$j] == "0") { echo "selected"; } ?>> 0 では問題なくて、 $selectedStartTime =($time_array[$a] == $start_time[$j])?" selected":""; $startTimeSelectBox .= "\t<option value=\"{$time_array[$a]}\"{$selectedStartTime}>{$time_array[$a]}</option>\n"; だとダメということですか?下記のソースで試しましたが、問題なく動作します。原因は別の部分じゃないですかね。少なくとも提示されたソースだけからは再現不可能ですので・・・ (テストスクリプト) <select> <?php $time_array = array( "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" ); $j = 0; $start_time[$j] = "21"; // selectedにする値 $startTimeSelectBox = ''; for( $a=0; $a < count( $time_array ); $a++){ $selectedStartTime =($time_array[$a] == $start_time[$j])?" selected":""; $startTimeSelectBox .= "\t<option value=\"{$time_array[$a]}\"{$selectedStartTime}>{$time_array[$a]}</option>\n"; } print $startTimeSelectBox; ?> </select>

k-karasu
質問者

お礼

回答ありがとうございます。 取れたときと取れなかった時で値を別に指定して処理をすることでうまくいきました。

k-karasu
質問者

補足

回答ありがとうございます。 すみません、提示したソースが不足していました。 配列の方も動作するんですけど配列の方は初期値と一致した配列の文字を表示するのみなんですが        <option value="0" <?php if($start_time[$j] == "0") { echo "selected"; } ?>> 0 <option value="1" <?php if($start_time[$j] == "1") { echo "selected"; } ?>> 1</option> <option value="2" <?php if($start_time[$j] == "2") { echo "selected"; } ?>> 2</option> <option value="10" <?php if($start_time[$j] == "10") { echo "selected"; } if($start_time[$j] == "0" ){ echo "selected";} ?>> 10</option> のように初期値が0の時とかに配列の決まった値を指定したいのです。 for( $a=0; $a < count( $time_array ); $a++){ $selectedStartTime =($time_array[$a] == $start_time[$j])?" selected":""; if ($start_time[$j] == "0"){$selectedStartTime = ($time_array[0])?" selected":""; } $startTimeSelectBox .= "\t<option value=\"{$time_array[$a]}\"{$selectedStartTime}>{$time_array[$a]}</option>\n"; } 今こんな風に書いているのですが配列の最後の値がvalue値に代入されてしまいます。 初期値が取れたとき、取れなかった時を実装したいということです。 長々と失礼しました。よろしくお願いします

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

参考にどうぞ http://www.phppro.jp/qa/4388

k-karasu
質問者

お礼

参考にさせていただきました。 ありがとうございます。

k-karasu
質問者

補足

回答ありがとうございます。 参考にさせていただきます。

回答No.1

何がしたいのがよくわかりませんが、上のコードで済むのでは。 結局PHP上の添字$jの値が0=HTML上のvalueが0、1は1、2は2なんですよね。

k-karasu
質問者

お礼

回答ありがとうございます。

k-karasu
質問者

補足

回答ありがとうございます。 あっています。 言葉だけで説明は難しいのですが、 初期値が取得できたときはその初期値と一致した配列の値を表示する、、、 初期値が取得できなかった場合は配列の決まった値を初期表示する、というようなことがしたいのです よろしくお願いします。

関連するQ&A