
phpのセレクトボックスの値を配列で指定したのですが初期値の表示がうまくいきません。
以下は現在のソースです。
$start_time[$j]はDBの取得値で取得配列と表示配列が一致するものを初期表示する
というコードが以下になります
$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" );
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";
}
疑問点ですが別条件で(たとえば$start_time[$j]にデータが0の時)配列の指定した値を選択したいです。
下記のようにそれぞれのvalue値の時に条件を指定すればできるのですが配列の時には
どのように初期値を設定すればいいかわかりません。
<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>
・
・
・
・
条件を指定したときに初期値を設定したいです。どのように実装すればいいでしょうか。
よろしくいお願いします。
No.4ベストアンサー
- 回答日時:
> 初期値が取得できたときはその初期値と一致した配列の値を表示する、、、
> 初期値が取得できなかった場合は配列の決まった値を初期表示する、というようなことがしたいのです
つまり$start_time[$j]の値が取得できない場合ということですよね?
それなら$start_time[$j]が取得できなかった場合のコードを書けば済むだけだと思いますが。
例えばPHPは緩いですから、取得できなかったら意図的に$start_time[$j]を作り上げてしまえば、後のコードも変更する必要ありませんよね。
回答ありがとうございます。
なるほど、そのような方法があったわけですね。
取得比較したときに一致しなければ・・・という使い方ができることで後述も変更なくいけました。
ありがとうございました。。
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>
この回答への補足
回答ありがとうございます。
すみません、提示したソースが不足していました。
配列の方も動作するんですけど配列の方は初期値と一致した配列の文字を表示するのみなんですが
<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値に代入されてしまいます。
初期値が取れたとき、取れなかった時を実装したいということです。
長々と失礼しました。よろしくお願いします
No.2
- 回答日時:
No.1
- 回答日時:
何がしたいのがよくわかりませんが、上のコードで済むのでは。
結局PHP上の添字$jの値が0=HTML上のvalueが0、1は1、2は2なんですよね。
この回答への補足
回答ありがとうございます。
あっています。
言葉だけで説明は難しいのですが、
初期値が取得できたときはその初期値と一致した配列の値を表示する、、、
初期値が取得できなかった場合は配列の決まった値を初期表示する、というようなことがしたいのです
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- Visual Basic(VBA) countifsについての質問 3 2023/03/08 13:45
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列の並びについて
-
foreachの実行結果について
-
c言語 単位行列
-
C言語の配列をPush(追加)する...
-
PHPでCSVを出力するさいに、ル...
-
ファイルの書き込みについて教...
-
PHPによる並べ替え(ソーティン...
-
CArrayの要素としてCStringArra...
-
文字列の取得について
-
CakePHPのfindの取得件数は?
-
多次元連想配列のキーを変数で...
-
PHPでfile()を使った際の配列の...
-
配列をループでたくさん宣言し...
-
複数選択可能なリストボックス...
-
String だと「 ByRef引数の型が...
-
配列のランク付け
-
総当たりのアルゴリズムについて
-
PHPからCSVをアップロード後、m...
-
Array Array と表示される
-
SimpleXML関数で取得したXML要...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語の配列をPush(追加)する...
-
行列
-
CArrayの要素としてCStringArra...
-
Texでの数式
-
読み(あ行~わ行)ごとに分け...
-
CArrayのソート
-
C言語 最大値と最小値を求めて...
-
fgetc関数について
-
PHPのmin関数、「1」以上の数値...
-
連想配列の文字コードを変換
-
STLのvectorで作った配列をメン...
-
C言語のchar ポインタ
-
C言語で全角文字の扱いについて
-
配列を指定した順序でソート
-
php で1から100までの素数の表...
-
delphi 2次元配列がわかりません
-
np.stack()とnp.array()の違い
-
array_intersectで空欄を比較し...
-
cakephpでのトランザクション処...
-
verilogで、配列の一部をタスク...
おすすめ情報