• ベストアンサー

フォームに入力した情報をそのフォームに反映するには?

http://f29.aaa.livedoor.jp/~unyu/joban/unyu.cgi?line=oer1000 上記のサイトのように、情報をフォームに入力し投稿ボタンを押すと入力したフォームに反映/保存され、その情報を他の人も変更(投稿)/回覧できるようにするにはどのようにすればよいのでしょうか? CGI/perlなどを探し、掲示板のプログラムを改造したりしましたが分かりません。回答お願いします。

  • CGI
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
回答No.2

こんなのはどうでしょうか。 我流プログラマなので、おかしかったら読み飛ばして下さい。 考え方はhtmlをcgiでデータ部分を書き換えて書き出す方法です。 test.htmlの、$~$で囲まれた部分を、cgiが書き換えます。 selectedの部分は、あるデータがある値のとき、$selected_データ名=値$ を'selected'に書き換えます。 checkedの部分は、$checked_データ名=値$ を'checked'に書き換えます。 ファイルの読み書きで、改行を\nにしてます。 言葉で説明するのが難しいので、プログラムを見てください。 下のtest.htmlと、test.cgiと、空のtest.datを用意してください。 test.cgiは、パーミッションを705(か755)にしてください。 #!/usr/bin/perlの部分は適当に書き換えてください。 test.datは、パーミッションを606(か666)にしてください。 perl5.8の標準モジュールCGIを使ってます。 perl5.6とかなら、cgi.pmをインクルードしてください。 --- test.html ここから --- <form action="./test.cgi" method="post"> data1:<input type="text" name="data1" value="$data1$"><br> data2:<input type="text" name="data2" value="$data2$"><br> data3:<textarea name="data3">$data3$</textarea><br> data4:<select name="data4"> <option value="" $selected_data4=$>選んでね <option value="1" $selected_data4=1$>その1 <option value="2" $selected_data4=2$>その2 </select><br> data5:<input type="checkbox" name="data5" value="1" $checked_data5=1$><br> data6: <input type="radio" name="data6" value="1" $checked_data6=1$>aaa <input type="radio" name="data6" value="2" $checked_data6=2$>bbb<br> <input type="submit" name="regist" value="登録"> </form></form> --- test.html ここまで --- --- test.cgi ここから --- #!/usr/bin/perl use strict; use CGI::Carp qw(fatalsToBrowser); use CGI; my $query = new CGI; print $query->header(-charset=>'Shift_JIS'); my %data; if(defined $query->param('regist')){ #データの登録 $data{data1}=$query->param('data1'); $data{data2}=$query->param('data2'); $data{data3}=$query->param('data3'); $data{data4}=$query->param('data4'); $data{data5}=$query->param('data5'); $data{data6}=$query->param('data6'); #改行変更 foreach my $key(keys %data){$data{$key}=~s/\n/\\n/g} #データ書き出し open(OUT,'>./test.dat'); print OUT join("\n",%data)."\n"; close(OUT); } #フォーム読込み open(IN,'./test.html'); my $form=join("\n",<IN>); close(IN); #データ読み込み open(IN,'./test.dat'); %data=grep(chomp,<IN>); close(IN); #改行変更 foreach my $key(keys %data){$data{$key}=~s/\\n/\n/g} #selectedデータ作成(select) $data{'selected_data4='.$data{data4}}='selected'; #checkedデータ作成(checkboxとradio) $data{'checked_data5='.$data{data5}}='checked'; $data{'checked_data6='.$data{data6}}='checked'; #フォームへデータ書き込み $form=~s/\$(.+?)\$/$data{$1}/g; #フォーム表示 print $form; exit; --- test.cgi ここまで ---

pageodakyu
質問者

お礼

プログラムまで書いてくださり本当に有難う御座いました。 おかげ様で成功しました。 有難う御座います!

その他の回答 (1)

回答No.1

投稿内容を<p>に入れる代わりに<textarea>に入れる。

関連するQ&A

  • CGIのお助け。。。

    http://f29.aaa.livedoor.jp/~unyu/joban/unyu.cgi?line=oer1000 上記のようなサイトのように、フォームに入力した情報をその(入力した)フォームに直接、表示・保存させる方法を教えてください。 いろいろと、CGI/perlなどを探りましたが見つかりません。 私の調査不足かもしれませんが、ご回答お願いします。

    • 締切済み
    • CGI
  • フォームで入力した内容を掲示板に反映させるCGIを探しています。

    普通の掲示板では、 1.タイトル 2.名前 3.メッセージ みたいな感じでフォームがあるのですが、これを 1.タイトル 2.所属 3.名前 4.使用しているコンピュータ 5.使用機器 6.メッセージ のようにフォームを作って、送信ボタンを押したら、入力内容を掲示板に 反映させたいと思っています。 具体的には、2~6の内容を普通の掲示板でいうメッセージの欄に 表示させたいと思っています。 私が探しているのは、複数のフォーム内容を掲示板に反映させることの できるフリーのCGIです。 いろいろ探してはみたのですが、なかなか見つからなかったので、 質問させていただきました。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • アンケートフォームの入力結果をcsvファイルに反映する方法

    最近ようやくCGIのことがわかりかけてきました。パールを一から書くことはできませんが、諸先輩方がフリーでリリースされているプログラムをカスタマイズして使わせてもらっています。(^人^)感謝♪です。このたび、社内でアンケート調査をすることになり、アンケートフォームを作ろうと思います。しかし、フリーのプログラムでは入力結果をセンドメールで送る雛形しか見つかりませんでした。初心者でも使いやすいもので、入力結果をCSVファイルに反映させることが可能なフリーのCGIプログラムの雛形はないでしょうか。御存知の方教えてください。

    • ベストアンサー
    • CGI
  • セレクトボタンとフォームのデータを反映させるには。

    セレクトボタンがあるとします。 セレクトボタンには「閉鎖」と「伝言」と「復活」という文字があるとします。 またページには最初から掲示板があるとします。(サイズは小さめ) 「閉鎖」を押すと最初からあった掲示板が消え、 その代わり、「閉鎖しました」という文字がでる。 「伝言」を押すと最初からあった掲示板が消え、 入力フォームがでてきて、そこに文字を入力すると 掲示板があった場所に文字がでる。 「復活」を押すと「閉鎖」「伝言」のどちらかの仕様で消えた掲示板が復活する。 というプログラムを作りたいのですが どうすればいいのか検討がつきません。 一応CGI/Perlに関する書籍及びサイトなどは閲覧済みです。 どうかご教授お願いします、

    • ベストアンサー
    • Perl
  • CGI/Perlでメールフォームを作るには。

    CGI/Perlでメールフォームを作るにはHPのトップページ(ソースコード)にCGI/Perlのプログラムを入力すればメールフォームは使用できるようになるのでしょうか? よろしくお願いします。

    • 締切済み
    • CGI
  • 入力フォームの反映

    登録ページにて、申込者の情報入力フォーム、社長の入力フォーム、部長の入力フォームが同ページにあります。 申込者は社長か部長かをドロップダウンで選択してもらいます。 社長を選んだ場合、申込者の情報を入力すると下の社長の入力フォームに同じものが反映され 部長を選んで入力すると、下の部長の入力欄に同じく反映させたいのですが PHPで可能でしょうか? よろしくお願いいたします。 // <p>[お申込み者入力]</p> <dt> <label for="yakusyoku">役職</label> </dt> <dd> <select id="yakusyoku" name="yakusyoku"> <option value="社長">社長</option> <option value="部長">部長</option> </select> </dd> <dt> <label for="m_name">お名前</label> </dt> <dd> <input name="m_name" type="text" id="m_name" size="10" maxlength="20" /> </dd> <p>[社長情報入力]</p><br> <dt> <label for="s_name">お名前</label> </dt> <dd> <input name="s_name" type="text" id="s_name" size="10" maxlength="20" /> </dd> <p>[部長情報入力]</p><br> <dt> <label for="b_name">お名前</label> </dt> <dd> <input name="b_name" type="text" id="b_name" size="10" maxlength="20" /> </dd>

    • 締切済み
    • PHP
  • 文字コードを変換してフォーム情報を送る

    今現在、JavaScriptを用いて、フォームの情報をいったんcookieに保存して、それを呼び出すことでページを更新しています。 具体的には、フォームの内容が変更されるとその変更内容をcookieに書き込みます。そして、重要なフォーム情報がすべて書き込まれると、各変数にcookieの内容を当てはめます。そのあとで、 addr = "aaa.cgi&xxx=" + aaa + "&ddd" + ccc; window.location = addr; という形で、CGIにデータを送って、ページを更新しています。ここで問題になっているのが、アルファベットと数字はうまくページ更新されるのですが、日本語はページが更新される段階で、文字化けされてしまいます。そこで、フォームの内容を変更されることなくcookieに保存する方法、もしくはCGIにフォームの内容を送ることはできますか。 このような、遠回りな事をしている理由に、元のCGIプログラムがコンパイルされているフリーソフトなためperlでの文字コード変換にかけられないので困っています。 どうか、力を貸してください。

  • フォームメールプログラムの改造について教えて下さい

    フリーのcgiのを使って改造をしております。 2つのCGIの機能を1つにしたいのです。 フォームに入力されたデータをCSVのデータファイルに保存する機能に、sendmailを使って入力された情報を入力者本人に確認メールを送りたいのですが、ふつうに2つのプログラムを貼り合わせただけではうまくいきません エラーは出ないのですがメールは届きません・・・ どなたか,ソースを見ていただける方いませんでしょうか? 宜しくお願いします。

    • 締切済み
    • CGI
  • フォーム入力形式で新着情報を入力したい

    ホームページの最初のページに、 「2008  秋の新メニュー始めました」 などの新着情報を表示しています。 HTMLの知識のないお客さんが新着情報部分だけ自分で更新したいというので困っています。 この部分をHTMLの知識がゼロの人でも更新できるような ブログのような掲示板のような感じでフォームに日付と内容を入力すれば更新される、 という状態にCGI(もしくは別の方法でも)することは可能でしょうか?

    • 締切済み
    • CGI
  • 「入力フォーム」に入力した情報が、指定したメルアドに送信されるようにしたい

    ホームページを作っている初心者です。 CGI について質問です。よろしくお願いいたします。 ホームページに設置した「入力フォーム」に お客様が入力した情報が、指定したメルアドに 送信されるようにしたいのですが どうすればよいのかわかりません。 現状は プロバイダにある Free CGI フォームメール をインストールしました。 その後、どうすればよいのかわかりません。 インストールした後に表示される以下の文章 の意味もわかりません。 「ホームディレクトリの /cgi_data/FormMail/ に サンプルをコピーしています。」 どうすれば ホームページに設置した「入力フォーム」に お客様が入力した情報が、指定したメルアドに 送信されるようになりますでしょうか? どなたかご存じの方いらっしゃいましたら どうかよろしくお願いいたします。

専門家に質問してみよう