HTML上で登録画面を作成して一度登録した内容を再表示させるには...?

[上に] [前に] [次に]
Parl初心者 [E-Mail] [HomePage] 1999/03/19(金) 12:50:28
はじめまして、今Perlを使用していて息詰まっているのですが、登録画面のHTMLをテーブルを使って作成し、
その一つの列にSelect形式にしてどちらかを選んで、入力が完了したら登録ボタンを押し、結果を参照表示させる
所迄は出来たのですが、只、登録した内容を変更したい場合、登録画面のHTMLを起動してしまうと初期の状態
になっていてもう一度再入力しなければならないのですが、これをうまく前回submitした分の内容を反映させて表示
し、直接変更してそのまま再登録するというような事は、Perl上で組めるのでしょうか...?
          すみませんが、教えて下さい。

\n 1999/03/19(金) 13:12:43
フォームページ → 確認ページ → 結果表示
で、確認ページで再編集する時にフォームページ入力の内容を、
再利用したいという事ですね。

素直にブラウザの「戻る」をさせた方が早いと思いますが。

print "<select name=hoge>\n";
print "<option selected>$value\n"; #前回に選択した内容
print "<option>選択肢1\n";
print "<option>選択肢2\n";
print "</selceted>\n";

ではどうでしょうか?

\n 1999/03/19(金) 13:14:52
前回の選択結果の部分にselectedをつけるだけでもいいですね。

CGI(Perl)初心者 [E-Mail] 1999/03/19(金) 20:12:23
解答ありがとうございます。
やはり、自分の組方が悪いのかうまくいかないみたいです。
ちなみにブラウザの「戻る」を使用すれば良いと思ったのですが、一度閉じてしまった場合、次に立ち
上げた場合、また元に戻ってしまうのでこの時に前回の登録内容を反映させればと考えていたので
すが、なかなかうまくいきません。
何か、サンプル的なURLがあったら教えて下さい。

ふじ 1999/03/19(金) 20:21:48
>ちなみにブラウザの「戻る」を使用すれば良いと思ったのですが、一度閉じてしまった場合、次に立ち
>上げた場合、また元に戻ってしまうのでこの時に前回の登録内容を反映させればと考えていたので
これをするには、どこかに前回の入力内容を記録しておかなければなりません。
サーバー上にデータファイルを作っておくか、クッキーに書き込んでおいて、
登録画面を表示する時にそれを読んで再現する。

登録画面を表示するのをCGIでやる必要がありますね。

CGI(Perl)初心者 1999/03/19(金) 20:55:18
ふじさん、解答ありがとうございます。
一応、登録画面で"登録"を押した後、"登録しました"と表示させて"aaa.dat"と言うファイルに書き込んで
おいてそのファイルを元に参照表示(cat $xxxを使用して)をさせていたのですが、登録内容を変更する
場合、どうしても一度閉じてしまったブラウザを再度立ち上げ、登録画面を開くと、リセットの状態で
開き、どうやっても前回の登録してあるファイルを呼び出して反映されなく悩んでいたのですが、
やはり、ふじさんの言う通り登録画面を表示するのをCGIでやった方が、楽に出来るのでしょうか...?

Aurai [E-Mail] 1999/03/20(土) 04:10:01
動くかどうかわからないSELECTEDのサンプル
$Index が選択されたエレメントの番号です

$Selection[0]="First";
$Selection[1]="Second";
print "<SELECT>\n";
for (0..$#Selection) {
  print "<OPTION";
  if ($Index==$_) then { print " SELECTED"; }
  print ">$Selection[$_]\n";
}
print "</SELECT>\n"

このごろPerl組んでいないので間違っているかもしれません(爆)

コルン [E-Mail] [HomePage] 1999/03/20(土) 04:16:27
 選択肢をキチンと再現するには、以下の方法も在ります。
(以下のコードは、オイラの作った掲示板より)

$colors='<option value="#000000">黒<option value="#ff0000">赤<option value="#00ff00">緑<option value="#ffff00">黄色<option value="#0000ff">青<option value="#ff00ff">紫<option value="#00ffff">水色<option value="#ffffff">白';
$colors=~s/"$color">/"$color" selected>/i;

 如何なものでしょうか?

ふじ 1999/03/20(土) 14:35:34
JavaScript + クッキーでのサンプル。

<script language="JavaScript">
function si(){
document.f.s.selectedIndex = (適当な関数でクッキーの値を取り出して下さい);
}
</script>
<body onLoad = "si();">
<form name=f onSubmit="document.cookie='sc='+document.f.s.selectedIndex+';expires=Fri, 31-Dec-1999 23:59:59 GMT';">
<select name=s>
<option>1
<option>2
<option>3
<option>4
</select>
<input type=submit value="submit">
</form>

サブミットする時に sc という名前のクッキーに selectedIndex の値をセットして、
次回以降ロードされた時にそれを見て selected をセットする、というものです。

Perl初心者 1999/03/23(火) 18:13:35
ふじさん、2度目の解答ありがとうございます。
それにAuraiさん、コルンさんも解答ありがとうございます。
ちなみに次のサンプルの様な形で自分なりに組んでみたのですが何かおかしな部分はありますか..?
まず、HTMLで登録した時の*.plの内容です。

open(OUT, ">/usr/local/aaaa/bbbb/ccc.dat");
print OUT "<TR><CENTER><TD><H3>1. XXXさん</H3></TD></CENTER>$FORM{'a-type'}</CENTER></TD>
<TD><H3>11. XXXくん</H3></TD><TD><CENTER>$FORM{'b-type'}</CENTER></TD></TR>\n";
print OUT "<TR><CENTER><TD><H3>2. XXXさん</H3></TD></CENTER>$FORM{'c-type'}</CENTER></TD>
<TD><H3>12. XXXさん</H3></TD><TD><CENTER>$FORM{'d-type'}</CENTER></TD></TR>\n";
close(OUT);
print "Content-type: text/html\n\n";
print "<HTML><HEAD><TETLE>DATA RECORD OF TDSE</TITLE>\n";
print "</HEAD><BODY>\n";
print "<H1>登録しました</H1><HR>\n";
print "やめる時はブラウザを終了して下さい。\n";
exit;

の形でccc.datに入力した内容が保存されます。

保存したccc.datのファイルを次の内容で処理し、URLで表示させます。
#!/bin/sh

DATE=/bin/date
ynew=/usr/local/aaaa/bbbb/ccc.dat
echo "Content-type: text/html"
echo ""
echo "<HTML><HEAD>"
echo "<TITLE>TEST参照画面</TITLE>"
echo "</HEAD><BODY BGCOLOR="#CCFF66">"
echo "<H2><B>TEST参照画面</B></H2>"
echo "更新日時: "
if [ -x $DATE ]; then
         $DATE
else
         echo Cannot find date command on this system.
fi
echo "<HR>"
echo "<TABLE BORDER="1" WIDTH="65%">"
echo "<TR>"
echo "<TD><CENTER><B>氏名></B></CENTER></TD><TD><CENTER><B>出退状況</B></CENTER></TD>
<TD><CENTER><B>氏名</B></CENTER></TD><TD><CENTER><B>出退状況</B><CENTER></TD></TR>"
cat $ynew
echo "</TABLE>"
echo "<HR><A HREF=\"http://www.xxx.xxx.co.jp/xxxx.html\">戻る</A>"
echo "</BODY></HTML>

...といった感じなのですが、これだけだと登録した後、ブラウザの「戻る」を押せば変更分を再度登録
出来るのですが、この作業を複数の担当が行った場合、(もちろんパスワードで登録部分は保護しますが...)
ブラウザを起動し、登録画面を選択した時に、現在の状況をそのまま表示して直接変更し、また再登録
をさせたいのですが、なかなか登録されてあるデータを読み出せないのですが、上記の内容を見て
何か意見等ありましたら発言願います。

[上に] [前に] [次に]