プルタウンメニューに書いてある内容を選び実行したら
文字がでるというプログラムを前に質問したときのソースコードを参考に作りましたがその文字が表示されません。
記述エラーなしでちゃんと動作します。
でも文字が表示されません。
ソースコードはこれです。
#!/usr/local/bin/perl
print "Content-Type: text/html\n\n";
print <<WC;
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body bgcolor=#ffffff>
<select name=\"menu\">
<option value=\"1\">こんにちは</option>
<option value=\"2\">●●ですか?</option>
<option value=\"3\">ゲーム好きですか?</option>
</select>
<input type=\"submit\">
</body>
</html>
WC
if ($FORM{'1'}){
print "こんにちは\n";
} elsif($FORM{'2'}){
print "いいえ違います。\n";
} elsif($FORM{'3'}){
print "いいえキライです。\n";
}
exit(0);
何が間違っているのでしょうか?
No.2ベストアンサー
- 回答日時:
まず構造に突っ込みどころがあるようにも思われます。
CGIの場合、全て実行した上で結果をパソコンに返します。なので、if文は実行されません。っと言うより、実行されても何一つ結果がありません。
なので、if文を始めに書き、データがある場合とない場合のページ分けをしないと、永遠にページは変わりません。
それよりも致命的なのが、フォームデータの受け取りです。
まず、<form>がないので、データを送れないというのも欠陥ですが、<selest>はデータを送るフォームです。
<select>は『名前しか設定できない』ものですから、値を設定できません。
じゃぁ、値は?っと思うでしょうが、それは<option>の中にあります。
<selest>にはname="menu"(名前)の設定項目がありますし、<option>にはvalue="1"(値)の設定項目しかないですよね?
それは、<select>は単体で値を遅れないし、<option>は単体で値に名前を与えることができないからです。フォームとは、名前と値がなければ意味の無いものですから、これは二つでセットなんですね。
つまり、受け取ったフォームの、$FORM{'menu'}の中に、1とか2とか3とかが入ります。$FORM{'1'}は、存在すらありません。
早い話、if文の中身が違います。
($FORM{'menu'}==1)などとするべきでしょう。
ちなみに、選択項目が二つで、値が0と1などという真と偽と判定されるようなものなら、($FORM{'menu'})でも、間違いではありません。
一応変数の中身で真偽の判定はしてくれます。(今回の値は全て真ですが。)
No.3
- 回答日時:
#!/usr/local/bin/perl
use strict;
2行目に上記のコードを追加するとエラーがでます。
まずこのエラーが出ないようにするのが先決でしょうね。
No.1
- 回答日時:
これCGIですよね。
どこがというより根本的にCGIの動作をわかっていないように思えます。
</html>まで送ったところでブラウザはその先はレンダリングしませんよ?
新たに描画しなおさせたいのなら、JavaScriptを使うなりして
ブラウザ側からアクション起こさないとダメです。
これまでの質問の傾向から判断するに、適当な入門書を
読むことをお勧めします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlで複数の値を返す良い方法...
-
内部処理形式が日付型 (Date) ...
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
文字の横にプルダウンを表示さ...
-
16進の10進変換について
-
formで特定のinputを送信しない...
-
VBAでPDFのコピーとリネームを...
-
セレクトメニューで2つの項目...
-
初回起動のみ判別したい
-
VB6で、長い時間かかる処理...
-
実行時エラー 3020の対策
-
セレクトボックスのselected属...
-
C言語のflagの使い方が分かりま...
-
メモリをアドレスを直接指定し...
-
ACCESS テキストボックスを隙...
-
セレクトボックスから別窓にジ...
-
FindFirst を複数条件で検索
-
シェルスクリプトで、空白(ス...
-
変数まとめて0に初期化する方...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perlで自分自身の関数名を知る...
-
Perlで複数の値を返す良い方法...
-
HASH(0xほげほげ)
-
プロトタイプ宣言のワーニング...
-
perlのスクリプトどこが間違っ...
-
dieやPerl自体でエラーが発生し...
-
内部処理形式が日付型 (Date) ...
-
Perl:CGI.pm:入力ボックスのク...
-
Rubyのgets関数について
-
icmp socket error
-
ベストマッチさせる方法
-
PerlでCabochaを呼び出すには(...
-
Net::SSH::Perlについて
-
Net::Telnetでタイムアウト時間...
-
foreach 回数制限
-
CLispのloop内の挙動について
-
変数に値を代入するのに、まずu...
-
Wコロン
-
Perlのプログラミングに困って...
-
入れ子ループで、外側のループ...
おすすめ情報