こんにちは。
PHPでDBから読み込んだ値によってセレクトメニュー、selected のタグが付く場所を変えたいんですが、自分の知識だけだと長文になってしまい短くできないものか悩んでます。
例えば値が1-3で、対応する値がA-Cだとすると、
<select name="menu">
<option value="1" selected>A</option>
<option value="2">B</option>
<option value="3">C</option>
</select>
で、データを受け取った値によって selectedの位置を"2"の後、"3"後に変更したいです。
自分で書くと
<?php
if ( $row["menu_c"] == 1){
<option value="1" selected>A</option>
<option value="2">B</option>
<option value="3">C</option>
}elseif( $row["menu_c"] == 2){
<option value="1">A</option>
<option value="2" selected>B</option>
<option value="3">C</option>
・・・
<option value="3" selected>C</option>
}
?>
のようになり、項目数分だけ毎回書き足す事になってしまします。
お分かりになる方ご教授頂けないでしょうか。
No.4ベストアンサー
- 回答日時:
対応文字も配列にしておくといいですよ。
<?php
$a = array("1"=>"A","2"=>"B","3"=>"C");
$selected = 'selected';
for ($i=1; $i<3; $i++){
if ($i==$row["menu_c"]){
print "<option value=\"" . $i . "\" " . $selected . ">" . $a[$i] . "</option>\n";
}else{
print "<option value=\"" . $i . "\">". $a[$i] ."</option>\n";
}
}
?>
有難うございます。
配列で考えるのですね。。。
まだまだ初心者なので、色々勉強になります。
if文で書くよりはスマートで高度なプログラムとなりますね。
毎回こちらの方々には敬服致します。
No.3
- 回答日時:
対応する値も配列に格納してfor文でまわすのが記述としては一番短くなるけど、パっと見で簡単に書きたいならこんなカンジでどうでしょ。
echo "<option value=\"1\" ".(($row["menu_c"]==1)? "selected":"").">A</option>";
echo "<option value=\"2\" ".(($row["menu_c"]==2)? "selected":"").">B</option>";
echo "<option value=\"3\" ".(($row["menu_c"]==3)? "selected":"").">C</option>";
No.2
- 回答日時:
for文を使わないとすれば、
<option value="1" <?php if($row["menu_c"] ==1){echo "selected";}?> >A</option>
<option value="2" <?php if($row["menu_c"] ==2){echo "selected";}?> >B</option>
<option value="3" <?php if($row["menu_c"] ==3){echo "selected";}?>>C</option>
なんかはどうでしょうか?
数字ではなく文字が判定の対象になるのでしたら有効ではないかと思います。
ありがとうございます!
まだまだ初心者なもので、if文で毎回フォームの始めから最後まで書き出す事しか考えていませんでした。
細分化して考えたらすんなりなのですねm(__)m
No.1
- 回答日時:
同じ事やったよ。
日にちをフォームで入力(年、月、日を個別入力)させるとき。
下の例は1日から31日までリストを出して、$iが今日の日にち($t_date)だったらselectedタグつける。
<?php
for ($i=1; $i<32; $i++)
{
if ($i==$t_date)
{
echo "<option selected>$i</option>";
}else{
echo "<option>$i</option>";
}
}
?>
使えない?
この回答への補足
ありがとうございます。いろいろ試して見た結果、
<?php
$selected = 'selected';
for ($i=1; $i<3; $i++){
if ($i==$row["menu_c"]){
print "<option value=\"" . $i . "\" " . $selected . ">" . $i . "</option>\n";
}else{
print "<option value=\"" . $i . "\">". $i ."</option>\n";
}
}
?>
で指定した番号 ==$iの場合 selected になりました。
しかし、<option> </option> の中にA,B,Cなどの文字列を入れる事ができません。。。どなたかお分かりになりますでしょうか。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript 中百舌鳥駅と深井駅を入れ替えて選択しても同じ挙動にしたいです。 2 2022/06/24 18:45
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- JavaScript 1度きりではなく、繰り返し、挙動が変わるようにしていただきたいです。 1 2022/07/03 15:50
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- JavaScript jsでは、'で区切った部分を改行することはできない。〇か×か。 1 2022/06/26 19:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
select値でのフォームのaction...
-
1つのSELECTで同時に2種類の...
-
特殊な連想配列について
-
セッションにIDを振って値を代入
-
PHPで画像の渡しが上手く行きま...
-
PHP等を用いて在庫数を表示・管...
-
input nameで日本語を使うと
-
ラジオボタンをsessionで使いたい
-
Flaskでサーバー立ち上げに関して
-
Submit(送信ボタン)を押した...
-
laravelを利用してコントロール...
-
テキストボックスの値を取得したい
-
functionとclassの使い分け
-
PHPでバーコード読み取りって・...
-
HTMLで前の画面に戻る時、入力...
-
MySQLのBIT型列へのデータ格納...
-
ファイルのアップロードが出来ない
-
チェックボックスのチェック済...
-
テキストリンクをPOST送信したい
-
パラメータを2個つけたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウンとCSVの連動
-
現在時刻を反映させた時刻のプ...
-
「"」(ダブルクォーテーション)...
-
選択したタグ、入力した検索文...
-
複数 selectフォームから今回on...
-
2つのプルダウンメニュから受け...
-
複数のセレクトボックスで
-
連動させたいセレクトボックス...
-
GET又はPOSTで受け取るデータに...
-
データベースにある値でリスト...
-
コンボボックス(プルダウン)...
-
php セレクトボックス 値取得
-
<select>文、foreachと初期値設定
-
PHP で画面の一部だけを変えたい。
-
セレクトフォームで選択した複...
-
phpでのセレクトボックスの値を...
-
ループでチェックボックスにche...
-
Smartyで、セレクトボックスが...
-
奇数や偶数を調べる関数
-
プログラミング言語で、使える...
おすすめ情報