フォームから入力されたデータの比較をCGIで行うには?
[上に]
[前に]
[次に]
がんま
[E-Mail]
1998/08/28(金) 00:59:44
お久しぶりです、とほほさん。 がんまです。
しばらくCGIから遠ざかっていましたが、今週から
再び組みはじめました。
で、早速と言うか、どうにもうまく行かないので
ここに質問をさせていただきます。
まず、フォームで入力したデータを
「名前」「性別」「時間」としてCGIで処理をして
指定したファイルに保存します。
それが、仮に以下の
GAMMA,MEN,10,20,50,
OMEGA,MEN,9,50,33,
と、このようになってます。
目的としているのは
この保存ファイルに保存してあるデータと、新しく書込まれたデータ
例えば上記の2行に追加する形で
RAY,WOMEN,9,58,20,
と、フォームで入力して、登録ボタンを押した後に
先に書いた、これまでの保存データと、新しく書込まれたデータを
比較して、時間の速い順、もし同時間であった場合を考えて、
名前の順に変更して、保存ファイルにデータを保存をしたいのです。
今の私がやると、ベタなものであれですが
GAMMA,MEN,10,20,50,
OMEGA,MEN,9,50,33,
RAY,WOMEN,9,58,20,
と、単に下に追加することしか出来ません(;_;
理想としているのは、上記のデータを
OMEGA,MEN,9,50,33,
RAY,WOMEN,9,58,20,
GAMMA,MEN,10,20,50,
このように並び替えて、保存ファイルに再び保存したいのです。
お忙しいところ、すみませんが、ご教授をお願いします。
B-Cus
1998/08/28(金) 01:19:34
とりあえず、データ形式を固定長にしてはどうですか?
1998/01/05 21:06:05 GAMMA MEN
とかね。これなら文字列でソートすればご希望の時間順、
名前順になると思います。例えばこんな感じ。
open(IN,"file");
while (<IN>){
chop;
push(@datas,$_);
}
close(IN);
push(@datas,"1998/08/08 00:11:22 RAY WOMEN"); # 追加したいデータ
open(OUT,">data");
foreach ( sort @data ){
print OUT "$_\n";
}
close(OUT);
データ変更が必要なら、名前をキーとしたhashを使うときれいに
書けるかと思います。
# もしかして、こういうのってDBMを使うと簡単に書けたりするのかな。
# 使った事ないからよくわかんないんだけど。
がんま
[E-Mail]
1998/08/28(金) 18:59:09
[[解決]]
B-Cusさん、はじめまして(^^
ご丁寧にリストまで組んでいただき、ありがとうございます!
お蔭様で、理想とした形に表示することが出来ました。
これから、問題点などを探りながら組んでみます。
もし、息詰まったら、質問させていただくことになると思いますが
その時は、よろしくお願いします。
[上に]
[前に]
[次に]