- ベストアンサー
PHPのセレクトボックスの初期値の設定方法
- PHPのセレクトボックスで初期値を設定する方法について解説します。
- 配列を使用してセレクトボックスの値を指定し、条件に応じて初期値を設定することができます。
- 具体的なコード例を示しながら、初期値の設定方法について詳しく説明します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> 初期値が取得できたときはその初期値と一致した配列の値を表示する、、、 > 初期値が取得できなかった場合は配列の決まった値を初期表示する、というようなことがしたいのです つまり$start_time[$j]の値が取得できない場合ということですよね? それなら$start_time[$j]が取得できなかった場合のコードを書けば済むだけだと思いますが。 例えばPHPは緩いですから、取得できなかったら意図的に$start_time[$j]を作り上げてしまえば、後のコードも変更する必要ありませんよね。
その他の回答 (3)
- agunuz
- ベストアンサー率65% (288/438)
初期値は$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>
お礼
回答ありがとうございます。 取れたときと取れなかった時で値を別に指定して処理をすることでうまくいきました。
補足
回答ありがとうございます。 すみません、提示したソースが不足していました。 配列の方も動作するんですけど配列の方は初期値と一致した配列の文字を表示するのみなんですが <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)
参考にどうぞ http://www.phppro.jp/qa/4388
お礼
参考にさせていただきました。 ありがとうございます。
補足
回答ありがとうございます。 参考にさせていただきます。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
何がしたいのがよくわかりませんが、上のコードで済むのでは。 結局PHP上の添字$jの値が0=HTML上のvalueが0、1は1、2は2なんですよね。
お礼
回答ありがとうございます。
補足
回答ありがとうございます。 あっています。 言葉だけで説明は難しいのですが、 初期値が取得できたときはその初期値と一致した配列の値を表示する、、、 初期値が取得できなかった場合は配列の決まった値を初期表示する、というようなことがしたいのです よろしくお願いします。
お礼
回答ありがとうございます。 なるほど、そのような方法があったわけですね。 取得比較したときに一致しなければ・・・という使い方ができることで後述も変更なくいけました。 ありがとうございました。。