• 締切済み

CGIで合計を書き出す方法

初めまして 初心者ですがよろしくお願いします perl CGIでデーターが 名前<>商品<>金額<> 例) 田中<>商品名<>1200<> 佐藤<>商品名<>2500<> 山田<>商品名<>2000<> 田中<>商品名<>1800<> とあるときにその方の合計金額を表示させたい場合はどうしたらよいでしょうか? 表示結果 田中さん 3000円 佐藤さん 2500円 山田さん 2000円 どなたかご指導お願いします

みんなの回答

回答No.2

> print "$nameさんの金額は合計$kyaku{$name}[4]", > join( ',', keys %{$kyaku{$name}[1]}),"円です<br>\n"; この結果が > cocoa23さんの金額は合計5200,1800円です だと思いますが、1つ確認を。 join()とは、何をどうするための物ですか? そして、何をどうしたいのですか? # 何をどうしたいかはわかりますが、質問者さんに再確認してもらうためです。

ys0620
質問者

補足

&fl('lwa_que.lock'); open(F,"$ptfile") || &print_error("ファイルオープンエラー。"); @raiten = <F>; close(F); unlink("$lockdir/lwa_que.lock"); my %kyaku; for( @raiten ){ my @dat = split /<>/; $kyaku{$dat[1]} += $dat[3]; } # 集計結果を出力 print "$_さんの振込み金額は合計で$kyaku{$_}円<br><hr>\n" for( sort keys %kyaku ); これでできました ありがとうございます あと$_さんと 名前をクリックすると その方の詳細が出るように <A href="xxxx">$_さん</A>とは できないのでしょうか?  

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

まずハッシュを作成しておく。 データを一行読み込んで、名前をハッシュのキーとして金額を可算する。 foreach文あたりで出力。 CGIに慣れてないのなら、コンソールプログラムでテストしてからCGIにしてみるといいでしょう。

ys0620
質問者

補足

&fl('lwa_que.lock'); open(F,"$ptfile") || &print_error("ファイルオープンエラー。"); @raiten = <F>; close(F); unlink("$lockdir/lwa_que.lock"); my %kyaku; foreach (@raiten){ my ($no, $name, $money, $kind) = split /<>/; unless($kyaku{$name}){ $kyaku{$name} =[0, {}]; } $kyaku{$name}[0] += $money; $kyaku{$name}[1]{$kind}++; } # 集計結果を出力する。 foreach my $name (keys %kyaku){ print "$nameさんの金額は合計$kyaku{$name}[4]", join( ',', keys %{$kyaku{$name}[1]}),"円です<br>\n"; } こんな感じでやってみましたが 金額が合計されません arisaさんの金額は合計1500円です hitozumaさんの金額は合計2200,2000円です cocoa23さんの金額は合計5200,1800円です

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

関連するQ&A