前質で→ 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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1桁の日付に0を付ける
-
perlでcheckboxがうまく整理で...
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
メモリをアドレスを直接指定し...
-
VB6で、長い時間かかる処理...
-
<SELECT>タグの折り返し
-
16進の10進変換について
-
プルダウンメニューで中央表示
-
ACCESS テキストボックスを隙...
-
セレクトボックスのselected属...
-
VBAでPDFのコピーとリネームを...
-
dieやPerl自体でエラーが発生し...
-
formで特定のinputを送信しない...
-
[python] 文字列を変数名として...
-
C++ APIについて エラーコード...
-
pythonで改行を含めてfindする方法
-
sendmailで複数の宛先にメール...
-
同じものを繰り返し表示させる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報