
前質で→ http://oshiete1.goo.ne.jp/qa4142221.html
#print "<option value=\"$day1\">$day1"; で出来たのですがw
dayの日範囲を多くするとかなり長くなってしまい(T_T)
(初心者のくせに)foreachを使ってみようかと
エスケープしたりダブルコーションにしたり色々やっても・・・
<option>に月日が表示されません(T_T)
基本的に間違っているのでしょうか・・・ お願いします。
*他にも変なところがあったら教えて下さい。
--------------------------------------
<select name=dd><option value="なし" selected> ↓ <option value="なし">指定なし
EOM
foreach (0 .. $#pl) {
if ($in{'plan'} eq $_) {
print "<option value=\"$_\">$pl[$_]\n";
} else {
print "<option value=\"$_\">$pl[$_]\n";
}
}
print "</option></select>\n";
#--------------------------------------
### ↑メイン.cgiです。↑
### ↓ サブ.cgiです。↓
#--------------------------------------
# 時間
$time = time();
# 範囲日
$day1 = day0($time + (86400 * 2));
$day2 = day0($time + (86400 * 3));
$day3 = day0($time + (86400 * 4));
############ 上下の行のday数が14日間位まで続く・・・
@pl = ('$day1', '$day2', '$day3');
# 日計算
sub day0{
my(@weekdayname) = ('日','月','火','水','木','金','土');
my $time = shift || time();
my $day0 = $time + (24 * 60 * 60);
my ($yyyy, $mm, $dd, $w) = (localtime($day0))[5,4,3,6];
$yyyy += 1900;
$mm += 1;
return(
sprintf('%4d/%2d/%2d(%s)', $yyyy, $mm, $dd, $weekdayname[$w])
);
}
No.3ベストアンサー
- 回答日時:
forで日付の配列を作る処理は問題ないので、表示されないとすると、if文の条件が該当しないから表示されていないだけでしょう。
まずは、ifをなくしてすべて表示させてみてください。
それから、全体の流れから推測すると、このifは、選択済みのoptionタグか、そうでないoptionタグのどちらかを表示する分岐ではなかったのでしょうか?
表示されました!! 感謝感激
if 部文はその通りです。
最初に指摘された if 文のところです。
foreachは別のCGIをコピペしまして if else のところで片方にselectedがありました。
初期値optionにselectedがある為、素人考えで消しちゃいました┐(´ー`)┌
atom_seedさんに少しでも近づけるようにもっと勉強しますw。
本当にありがとうございました 10000 点の回答です!
No.2
- 回答日時:
入れ替えるように回答を書いたつもりですし、実際そのように記入できているようですが、うまくいきませんか?
最初の質問のときには、
> @pl = ('$day1', '$day2', '$day3');
で、変数を展開すべきところをシングルクォートでくくってしまって、変数のまま出ていたと思いますが、
私の回答ではその方法をまるごと差し替えたので解決したはずなのですが。
何がしたくて、今どうなってるのか、ご自身でしか分からない部分はなるべく説明するようにしてもらえると回答しやすいです。
この回答への補足
はい、うまくいかないのです。
年月日のプルダウンがありましたので
$day1 $day2 $day3 をselect optionでの表示はできていました。
これの日間隔の変更を簡単にする為とソースを簡単にする為に記述した
foreachができませんでした。
$の展開が出来ない為だと思います。
そのまま$表示されたり、optionが空白で長くになったり"'$day1'""とかw
次に教えて頂いたfor(書いた場所が正しいのかもわからないのですが)
optionでは
↓
なし
例1
と初期optionの3項目しか表示しなくて、その下は空白・空欄もありません。
メイン.cgiでは前に作った#$day2 = day0($time + (86400 * 3));の
$time とか $day2 とかを試しに表示させると(option以外の場所に)
1214922371 2008/ 7/ 3(木)とか正常に表示されますが
forで作った $day2 $day3 $day4....とかが普通に(option以外の場所にも)
表示されないのもforが作用していないの?と思います。
また、2..14 を 2..5 とかやっても表示されません。
foreachとかforとか初めてでそのへんはさわれないので
数字や名前等を書き換えたりしたのですが、何も変化ありません。
質問部分のif ($in{'plan'} eq $_) {
は、pl に訂正してまして前の補足のが正しいです。
No.1
- 回答日時:
# 範囲日
$day1 = day0($time + (86400 * 2));
$day2 = day0($time + (86400 * 3));
$day3 = day0($time + (86400 * 4));
############ 上下の行のday数が14日間位まで続く・・・
@pl = ('$day1', '$day2', '$day3');
シングルクォートは変数を展開しないので使い方が間違っています。
また、forを使えば短く書けます。
時間は計算済みの数字ではなく式を書いておくと、あとで読み直しやすいです。(&day0のなかでやっている方法をおすすめします)
for my $i ( 2 .. 14 ) {
push( @pl, day0( $time + ( 60 * 60 * 24 * $i ) ) );
}
> 基本的に間違っているのでしょうか・・・ お願いします。
> *他にも変なところがあったら教えて下さい。
最初のif文で分岐した内容が同じものprintしていますので要注意です。
この回答への補足
笑わないでくださいね(T_T) forをどこに書けば良いのでしょうか?。
<select name=day><option value="なし" selected> ↓ <option value="なし">なし<option value="例1">例1
EOM
foreach (0 .. $#pl) {
if ($in{'pl'} eq $_) {
print "<option value=\"$_\">$pl[$_]\n";
}
}
print "</option></select>\n";
#--------------------------------------
### ↑メイン.cgiです。↑
### ↓ サブ.cgiです。↓
#--------------------------------------
# 時間
$time = time();
# 範囲日
for my $i ( 2 .. 14 ) {
push( @pl, day0( $time + ( 60 * 60 * 24 * $i ) ) );
}
# 日計算
sub day0{
my(@weekdayname) = ('日','月','火','水','木','金','土');
my $time = shift || time();
my $day0 = $time + (24 * 60 * 60);
my ($yyyy, $mm, $dd, $w) = (localtime($day0))[5,4,3,6];
$yyyy += 1900;
$mm += 1;
return(
sprintf('%4d/%2d/%2d(%s)', $yyyy, $mm, $dd, $weekdayname[$w])
);
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付の差分の求め方(日、分)
-
JSONで文字列が長い時
-
実行時エラー 3020の対策
-
セレクトボックスを非表示にし...
-
SELECT OPTIONの中身をコピペ...
-
関数「exists」と「defined」の...
-
formで特定のinputを送信しない...
-
インラインフレーム内へのリンク
-
プルダウンリストの背景色の指定
-
複数列を持ったリストボックス...
-
Application.ScreenUpdating = ...
-
メモリをアドレスを直接指定し...
-
シェルスクリプトで、空白(ス...
-
数値かどうかの判定方法
-
[python] 文字列を変数名として...
-
C言語のflagの使い方が分かりま...
-
セレクトボックスのselected属...
-
Pythonの np.indicesに関する質...
-
16進の10進変換について
-
sendmailで複数の宛先にメール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語を用いて、2つのファイル...
-
先月(YYYYMM)の生成方法
-
前日の日付取得するには?
-
日付の差分の求め方(日、分)
-
体重が3kg増える/減る の英語...
-
Date::Calcの計算ミス?
-
1桁の日付に0を付ける
-
日齢計算プログラム
-
Perlでsprintf("%02d",$month)...
-
「型が一致しません」のエラー...
-
CGIについて(時間表示)
-
Perlで日付を取得する
-
Perlの日付の比較に関して
-
大至急お願いします。出力で悩み。
-
CSV読み込み時に条件に合う行(...
-
月見る月はこの月の月
-
当日の日付をプルダウンメニュ...
-
質問
-
C言語のプログラミングについて...
-
CGI:Cookie保存期限の指定について
おすすめ情報