• ベストアンサー

CGIプログラムで得た結果を一行テキスト領域に入れるには?

フォームのaction で呼び出したdic.cgi が計算をして、二つの値$i,$maxを出し、それを、2つ用意した一行テキスト領域それぞれに入れたいのですが、どうやったらよいのでしょうか? <form action="dic.cgi"> <input type=text name="count" value="$i"> <input type=text name="total" value="$max"> form> ではエラーになりました。 どなたか、どうか教えて下さい。

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

  • ベストアンサー
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.13

cgi-lib.plで &ReadParse(*f); を行っているのなら私が書いた QUERY_STRING を解析するロジックはいりません。 ReadParseがその処理ですから。$tango = $f{'tango'}と同様に取得できます。また、POST/GET、どちらのmethodでも $f{'hoge'}に格納してくれるので formの methodを POSTにすれば URLに不要な文字列が入りません。 また、ReadParseを使うことで %xxと書かれた部分の解析(変換)も行ってくれます。 では、私が書いたものの間違いを訂正しつつ動くように改造します。 form表示部分を <INPUT type="submit" name="search" value="単語検索"> <INPUT type="submit" name="search" value="↑"> <INPUT type="submit" name="search" value="↓"> と直して下さい。 前後しますが判定部分を if ($f{'search'} eq '単語検索') { #単語検索 } elsif ($f{'search'} eq '↑') { #デクリメント処理 } elsif ($f{'search'} eq '↓') { #インクリメント処理 } > print <<EOD; > Content-type: text/html; charset=sjis-jp\n\n"; > これは?? Content-type: text/html; charset=sjis-jp (↑ここを必ず1行空けること) です。 #私もてさぐりの所があるので冗長的な回答になってすいません。

tonka729
質問者

お礼

yatokesaさま、おかげさまでできました。ゴールインです!感激です。手取り足取りご指導を受けました。感謝しております。これでひとまずこのページの基本部分ができました。 あとはFrame1に希望のニュースサイトを表示、それを記憶、一覧、選択し、入力部分はもっと改善して、検索表示される見出し語を表示するname=tango とはまた別に一行入力領域type=text name=inclimentbox を設置して、インクリメント表示方式で、一字入力毎に収録単語を先読みして下のtangoとtextarea=result に検索結果を示す、としたいと思います。  そんな構想なんですが、次に最初に解決したい問題は、textarea内の表示に<BR>が出てしまっている点です。print $data という表示の仕方を念頭に入れたテキストデータ$data の<BR>をどのようにすれば、うまく改行表示として使えるでしょうか?  yatokesa さま、この質問はあらたなスレッドでさせていただきますので、どうか、また引き続きご指導をいただきたく存じます。

その他の回答 (12)

  • feininger
  • ベストアンサー率41% (74/180)
回答No.2

もしかしてAとBという2つのファイルで実現しようとしていますか?  A)入力フォームを表示する*.htmファイル  B)Aから呼び出される*.cgiファイル もし該当するようでしたら「CGIファイル1つだけ」で実現する方法を考えてみるとよいかと。 つまりURLを http://***/cgi-bin/input.cgi などとしてアクセスすると入力フォームが表示される。 そんなCGIを作るということです。 (この実現方法は別に特殊なわけではないですよ)

  • feininger
  • ベストアンサー率41% (74/180)
回答No.1

通常は↓のようなHTMLソースになるかと <form action="dic.cgi" name="data_input" method="POST"> <input type=text name="count" value="aaa"> <input type=text name="total" value="bbb"> <input type="submit" value="送信する"> </form> また、perlでprintする際にダブルクォーテーションの\が抜けているとか? print "<input type=text name=\"count\" value=\"$i\">"; 「なに」をやったときに「どんな」ことになるのかは補足したほうがよいですよ。 提示されているコードがHTMLなのかPerlなのか区別がつかないので。

tonka729
質問者

お礼

Feininger さま、ご親切なご忠告をありがとうございました。実はPerlで書いたつもりだったのです。初心者なので、まるでそうは見ていただけなかったわけです。 普通フォームに入力してその値をCGIで処理しますね。 僕の場合、さらに二つ、一行入力ボックスがすでに設けてありまして、その中にこの処理の結果得られた値$i, $count を入れたいのです。説明がまただめかもしれませんが、いかがでしょうか?

関連するQ&A