フォームから入力されたデータの比較を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,
このように並び替えて、保存ファイルに再び保存したいのです。
お忙しいところ、すみませんが、ご教授をお願いします。
お久しぶりです、とほほさん。 がんまです。
しばらく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を使うと簡単に書けたりするのかな。
# 使った事ないからよくわかんないんだけど。
とりあえず、データ形式を固定長にしてはどうですか?
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さん、はじめまして(^^
ご丁寧にリストまで組んでいただき、ありがとうございます!
お蔭様で、理想とした形に表示することが出来ました。
これから、問題点などを探りながら組んでみます。
もし、息詰まったら、質問させていただくことになると思いますが
その時は、よろしくお願いします。
[[解決]]
B-Cusさん、はじめまして(^^
ご丁寧にリストまで組んでいただき、ありがとうございます!
お蔭様で、理想とした形に表示することが出来ました。
これから、問題点などを探りながら組んでみます。
もし、息詰まったら、質問させていただくことになると思いますが
その時は、よろしくお願いします。