• ベストアンサー

CGIのボタンの処理について

CGIのフォームにチェックボックスがあってボタンを押すとある処理をさせたいのですが、 <form action="○○.cgi" method="post"> を使って新たなCGIを呼び出さずにフォームのCGIで処理をし、結果を反映させたいのです。もし方法をご存知の方がいましたら教えて欲しいのでよろしくお願いします。 <-------cgiソースの一部----------> print "<input type=\"checkbox\" name=\"re_$n\" value=\"$userdata[$i]\">"; print "<input type=\"button\" value=\"処理\">"; ボタンを押した時に処理をしてすぐさまリロードして同じページに結果を反映させたい!

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

  • ベストアンサー
  • panick
  • ベストアンサー率40% (26/64)
回答No.3

No.2 の続きです 単純にメッセージを一時的に表示をさせないようにするだけではなく、ユーザーデータファイルにある各ユーザー別のメッセージ・データをユーザー自ら削除するならば、そのように CGI を修正する方が一般的だと思えます。 たとえば、掲示板の投稿をユーザー自らが削除するイメージではダメでしょうか。

rinkey
質問者

お礼

アドバイスどうもありがとうございます。 そうですね、掲示板のイメージで大丈夫でした。掲示板をあまり使った事なかったんで気づきませんでした・・・ お世話になりました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • panick
  • ベストアンサー率40% (26/64)
回答No.2

質問の説明からは何をしたいのか分からないのですが。。。 ><form action="○○.cgi" method="post"> >を使って新たなCGIを呼び出さずに ここの「呼び出さずに」は「呼び出して」の間違いではありませんか? >フォームのCGIで処理をし、結果を反映させたい >CGIのフォームにチェックボックスがあってボタンを押すとある処理をさせたい >ボタンを押した時に処理をしてすぐさまリロードして同じページに結果を反映させたい たとえば、CGIのアンケート・フォームのようなものはダメなんでしょうか?

rinkey
質問者

補足

 すみません、説明不足でした。 ユーザーデータファイルにメッセージが保存されていて、SSIを使ってアクセスしてきたユーザー毎にファイルを読み取ってメッセージを表示させるようにしてあるんですね。このメッセージをユーザーの手動で消す方法として、チェックボックスを用意しました。  チェックボックスにチェックを入れてボタンを押すとユーザーデータファイルのメッセージを削除してファイルを更新し、ページをリロードしてメッセージを消す、という風にしたいと考えているのですが・・・ どーでしょうか?

すると、全ての回答が全文表示されます。
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 多分POSTせずに同じ画面(ページ)内で処理をさせたいという事なんだろうけど、それだとJavaScriptを使わないとできないね。  残念ながら、CGIというのは最終的にプログラムが動作した結果をHTMLで返すものだ。なので、結果(HTML)をCGIで変える、というのは新たなCGI(たとえそれが自分自身でも)を呼び出す事になる。

rinkey
質問者

お礼

 説明が不足していましたがご親切にありがとうございました。掲示板の削除機能のイメージで出来そうなので頑張ってみたいと思います。

rinkey
質問者

補足

 そうですか~。 ではボタンを押したらってことをJavaScriptで書いて処理をPerlで書くのって出来ます 処理が終わったらJavaScriptでリロードしてページ更新するみたいな。

すると、全ての回答が全文表示されます。

関連するQ&A