アプリ版:「スタンプのみでお礼する」機能のリリースについて

セレクトボックスの値をループで繰り返してvalueを設定しているのですがvalueの数が多くなればかなり見づらく
修正もしにくいのでvalue値を配列などで指定したいと思っています。

その場合、どのようにしてvalue値に配列を設定すればよろしいのでしょうか。
また配列でvalueを設定した場合[selected]などで初期値を設定する方法も分からなかったので
何かわかりやすくかつ少ない行数で胥吏できる方法があればご教授お願いします。

<?php
for ($data = 1; $data < 5; $data++)
{
?>
<tr><td>
<select name="test<?php echo $data?>">
<option value=1>1
<option value=2>2
<option value=3>3
<option value=4>4
<option value=5>5
<option value=6>6
<option value=7>7
<option value=8>8
<option value=9>9
<option value=10>10
</select>
<?php
}
?>

※option valueが20とか30とかになるとかなり見づらい処理かなと思います。
配列を変えるだけでいいようにしたいです。

A 回答 (3件)

#2です



デフォ値を指定したいならこんな風にしていもいいかもしれません

<table>
<?php
$defaultvalue=array(1=>1,2=>3,3=>7,4=>10);
for ($i= 1; $i < 5; $i++){
print "<tr><td>\n";
print "<select name=\"test{$i}\">\n";
for ($j = 1; $j <= 10; $j++){
$selected=($defaultvalue[$i]===$j)?" selected":"";
print "<option value=\"{$j}\"{$selected}>{$j}</option>\n";
}
print "</select>\n";
print "</td></tr>\n";
}
?>
</table>
    • good
    • 0
この回答へのお礼

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

初期値の配列が文字の場合や画面初期表示の初期値はAパターン
未入力時はBパターン
比較結果ではCパターンなど初期値がごちゃごちゃになっていました。
ループでの表示と比較の初期値が設定できたので他のパターンの初期値を想定してみます。
ありがとうございます。

お礼日時:2014/09/02 11:58

valueが1から連続する整数であればこんな感じでやってもよいかと



<table>
<?php
for ($data = 1; $data < 5; $data++){
?>
<tr><td>
<select name="test<?php echo $data;?>">
<?php
for ($i = 1; $i <= 10; $i++){
print "<option value=\"{$i}\">{$i}</option>\n";
}
?>
</select>
</td></tr>
<?php
}
?>
</table>

ただいちいちphpタグに入ったり出たりするくらいなら、一連の流れを
全部一括でやった方がむしろ見やすいと思いますが・・・

<table>
<?php
for ($i= 1; $i < 5; $i++){
print "<tr><td>\n";
print "<select name=\"test{$i}\">\n";
for ($j = 1; $j <= 10; $j++){
print "<option value=\"{$j}\">{$j}</option>\n";
}
print "</select>\n";
print "</td></tr>\n";
}
?>
</table>

なお、デフォルト値の指定など設定したいとかになると少し工夫が必要です

この回答への補足

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

<?php
$select = SelectBox("0","1","2","3","4","5","6","7","8","9","10");
$SelectBox = "<select name=\"selectBoxName\">\n";
for ( $i = 0; $i < count( $SelectBox ); $i++ ) {
$SelectBox .= "\t<option value=\"{$SelectBox[$i]}\">{$SelectBox[$i]}</option>\n";
}
$SelectBox .= "</select>\n";

echo "{$SelectBox}";

?>

こんな風に実装していたのですがselectedでの初期値の設定がphpで作成した時よくわからなかったので
htmlでベタ書きして作成してました。

<option value="0" <?php if($select[$i] == "0") { echo "selected"; } ?>> 0</option>
これだと初期値も取れるのですがvalue値が多いと行も多くなってしまうので
valueのところだけ配列で指定などはできるのでしょうか。

よろしくお願いします。

補足日時:2014/08/22 09:56
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/09/02 11:53

開始と終了が決まっているなら、



<?php
for ($i=1; $i <= 20; $i++) { printf('<option value="%d">%d</option>' . PHP_EOL, $i, $i); }
?>

の方が配列にするよりもいいんじゃないですかね(配列で要素を20も30も書くのも無駄)。

この回答への補足

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

調べましたがいまいちつかめなかったのですが
このソースは何をしているのでしょうか。

ちょっと理解が足らずすみません

補足日時:2014/08/22 10:08
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/09/02 11:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!