プロが教えるわが家の防犯対策術!

CGI,Perlで下記のようなことを、行いたいと考えています。

 a.html
 b.html
 c.html

があり、
__________________________________
1:それぞれ、フォームに、テキストボックスが一つあります。
2:他のフォームに遷移できます。(例:a.htmlからc.hmtlのように)
3:各フォームに「A、B、Cの値を確認」ボタンがあります。
4:3のボタンをクリックすると、各テキストボックスで入力した
値が表示される。

【イメージ】
a.htmlのテキストボックスに、100を入力
b.htmlのテキストボックスに、200を入力
c.htmlのテキストボックスに、300を入力

した場合。

Aで入力された値は100です。
Bで入力された値は200です。
Cで入力された値は300です。
______________________________________
と表示させる、cgiを作成したいです。

又、その際、hiddenを使用して行う方法(手順)を教えて頂けないでしょうか。

ファイルに書き込むことで、値を保持しておくのではと
考えましたが、a.htmlの値100を書き込み、再度、a.htmlの
値を書き込むと、a.htmlのフォームから送られた値が2つ(1回目、2回目)書き込まれた
状態になるように思います。

今回のように、例えば、ファームの入力値を保持して他の(b.thmlなど)に
遷移し、ボタンをクリックすると、全フォームの値を表示するような場合、
どのような方法が考えられるのでしょうか?

どうぞ、宜しくお願いいたします。

A 回答 (2件)

CGIはブラウザからサブミットされたデータを受信して処理します。


基本的にはそれぞれ別個のフォームとなりますので、いずれかひとつのフォームでサブミットした場合はそのフォームの内容のみしかサブミットできません。
よって、サブミットする側の問題なのでCGI側ではどうすることも出来ません。
これを解決するにはクライアント(ブラウザ)側での処理を行う以外に手は有りませんので、必然的にJavaScriptを用いて以下の条件を満たすことで全ページのフォーム内容をサブミットすることが可能となります。

1.a,b,cのhtmlは名前付きのフレーム内に確実に存在すること(別窓だと表示不足処理がめんどくさい->たとえば「a.html」しか開いていない)
2.各html内のフォームにそれぞれ別個のname指定があること

例として
a.htmlから別のフレームのhtml内のフォームにあるテキストフォームを参照する場合は

変数名 = parent.フレーム名.document.フォーム名.テキストフォーム名.value;

で取得できますので、これをhiddenフォームに代入してからサブミットすればよいです。

サーバとクライアントという関係が介在するようなWebプログラミングは、サーバ側の処理(CGIやPHPなど)とクライアント側の処理(JavaScriptなど)をしっかり判別理解して取り組まないとまともに動作するものは出来ません。

この回答への補足

「ralf124c」さん、こんにちわ。ご返信ありがとうございます。

JavaScriptを利用する訳ですね。perl(cgi)の事ばかり、調べていました。

参考にさせていただきます。

補足日時:2010/09/21 11:17
    • good
    • 0

一枚のフォームに3つのテキストボックスを作るのが一番簡単みたいですが、


一つのCGIで3つのフォームを書かせて、submitボタンとhiddenタグを使えば似たようなことは
できると思います。
<form>  </form>は一枚のフォームに複数書くことが出来ますからね。
    • good
    • 0

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