みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

フォーム送信できないのは<TABLE>が原因?

見当はずれの質問かもしれません。次のように、テーブルの中にフォームを入れてあります。その関係でしょうか、submit ボタンを押してもCGIプログラムにアクセスしません。私の方が何かを勘違いしているのかもしれませんが。。。。

<BODY bgcolor="#b08317">
<table border=4 width=680 align=left>
<tr bgcolor="#cccccc">
<form method="GET" action="do_select.cgi" name="resultform">
<th>
<textarea name="DATA" cols=52 rows=6> </textarea>
</th>
for ($i = 0; $i <= $#yakugo; $i++) {
$yakugotext=$yakugotext . $yakugo[$i] . '$';}
print <<EOD;
<textarea name="hiddenyakugo" cols=1 rows=1>"$yakugotext"</textarea>
<input type="submit" name="search" value="送信">
<INPUT type="submit" name="search" value="↑">
<INPUT type="submit" name="search" value="↓">
</form>
</tr>
</th>
</table></BODY>

もし、原因や改善のアドバイスをいただければ幸いです。

投稿日時 - 2003-11-02 11:09:33

QNo.694954

暇なときに回答ください

質問者が選んだベストアンサー

#2です。
追加確認:
form methodが「GET」になってますがなぜですか?
$#yakugoが幾つ位になるか分かりませんが、送信可能な最大文字数を超えませんか?

$yakugotextどのように使用されているのかまったく想像つきませんが、前半部が print文になっていないことといい、肝心なところを省略していませんか?

投稿日時 - 2003-11-03 02:55:30

お礼

省略の仕方が不適切でした。申し訳ございません。以後気をつけます。
フォームのメソッドをPOSTにしたら一部問題が解決しました。この違いがあることを忘れていました。
どうもありがとうございました。

投稿日時 - 2003-11-03 13:44:03

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

>(3)CGIプログラムというのは、自らの中からさらに他のCGIプログラムにアクセスするような仕様が可能でしょうか?
可能と回答しましたが、「アクセス」とはどのような意味で使ってますか?
質問は、主語、述語を明確に、意味がわかるように詳しく書いてください。

投稿日時 - 2003-11-03 03:05:48

お礼

フォームのaction に指定されているxxxx.CGIプログラムの中でさらにフォームを設置し、action=yyyy.cgi としてsubmit を実行することが可能かどうかをお尋ねしました。文章が不明確でした。申し訳ございません。以後正確な文章を書くように心がけます。済みませんでした。

投稿日時 - 2003-11-03 13:48:38

ANo.2

submitボタンの4つくらいたいしたことありません。30個程度作ってますけど、ぜんぜん問題ありません。

>(1)フレームやテーブルによってフォームの送信が行われないことはあるのですか?
W3Cの勧告には違反しているかもしれませんが、現実問題としては <form>が <table>の中にあっても、問題なく動きます。

>(2)部品submit ボタンのname を書かないでいい時と書かなければいけないがあるのですか?
<form>~</form>内に1つのsubmitボタンであれば(<form>が複数あっても)必要ありませんが、2つ以上のsubmitボタンだとどのボタンが押されたか評価しないといけないので(valueの)値を受取るために名前が必要では?

>(3)CGIプログラムというのは、自らの中からさらに他のCGIプログラムにアクセスするような仕様が可能でしょうか?
可能です。CGIプログラムに限らず、HTMLでさえ<META>タグの「refresh」で他のプログラム、HTMLへジャンプすることが出来ます。

ところで、質問とは無関係な内容もありますが気づいた点です。

1.「for」から上が print文になってませんが、いいんでしょうか?
ちゃんと出力されているか出力結果を「表示」→「ソース」で確認してください。

2.省略しただけかもしれませんがヒアドキュメントの終わりの「EOD」がありません。

3.二つ目の<textarea>の cols, rowsが「1」というのはどういうことでしょう?

4.同じく$yakugotextの「"」は不要。

投稿日時 - 2003-11-03 02:35:18

ANo.1

hiddenyakugoのテキストエリアが、セルに入っていないようですが?
あと、
閉じもおかしくないですか?
</tr>は良いとして、その後に</th>があるのは変ですよ。

あと3つあるsubmitボタンは何か意味があるのでしょうか?

投稿日時 - 2003-11-02 11:57:47

お礼

おっしゃるとおり、submit ボタンが4つもある仕様なんです。一つのフォームの部品としては、このほかに、オプションメニューが一個、またinput が2つあるなど、かなり負担の大きなフォームになっています。で、action に指定したCGIプログラムにアクセスできているのは一つだけで、他の三つのボタンは死んでいます。また、フォームの部品に入った値も一部の部品の値しか読めていません。
 言葉ではお伝えしにくくて残念です。フォームというのはどういう制限があるのでしょうか?
 (1)フレームやテーブルによってフォームの送信が行われないことはあるのですか?
(2)部品submit ボタンのname を書かないでいい時と書かなければいけないがあるのですか?
(3)CGIプログラムというのは、自らの中からさらに他のCGIプログラムにアクセスするような仕様が可能でしょうか?

投稿日時 - 2003-11-02 22:32:54

あなたにオススメの質問