CGI初心者で大変困っています。。。
現在、CGIで入出金帳簿をつけるようにしています。
フォームで入力してCSVに保存する所まで完成しました。
そこから、FTPでCSVファイルをダウンロードして、CSVを開いて、ExcelとしてSUMとかで縦を足したり、エクセルのオートフォーム等で、科目別に並べ替えたりしています。。。。
これをWeb上で実現し、最後は印刷までしたいのですが。。。
内容は「日付」「摘要」「入金額」「出金額」「備考」です。
serch.cgiを作成して、日付とか摘要で検索できて表示まではできるようになりました。
しかし、金額の合計の求め方やどこにソースを書けばいいのか?
まったくわかりません。
どうすれば可能でしょうか?
いろんなサイトを見てもわかりませんでした。。。
No.4ベストアンサー
- 回答日時:
済みません、スクリプトを良く見ないでコメントしてしまいました。
このスクリプトが全てではなく、@NEWがどのようにcsvとかブラウザーに表示するのかが分らないのですが。
push(@NEW,$data2); の @NEWに入れ込んでいるので、
else { push(@NEW,$data2); $hit++; }
}
の下に、
$goukei = ",,,$nkin,$skin,";
または、
$goukei = "$nkin,$skin";
と記して、
push(@NEW,$goukei);
ではどうでしょうか。
またテストとして、push(@NEW,$goukei); の下に、
$test = join("\n", @NEW);
&error('エラー',"$test");
の2行を追記して、アクセスすると、エラー表示のところにズラズラ出て最後に合計金額とかがでていませんか?
出ていてもいなくても、あとでこの2行を削除してください。
教えて頂いたhtmlのソースの方は、@BASE = ; と記述ミスがありました。@BASE = <IN>; だと思います。
すみません。いろいろ親切に教えていただきましたが、
500サーバーエラーがずぅ~っと出てきて結局断念しました。。。
初心者でご迷惑をおかけいたしました。。。
ありがとうございました。
No.3
- 回答日時:
「foreach $num ($FF .. $#BASE) {」の上に、
$skin = $nkin = '0';
と記して、
「# 摘要(一致)」の下に、
$nkin += $inmoney;
$skin += $outmoney;
と記します。
else { push(@NEW,$data2); $hit++; }
}
の下に、
print "入金:$nkin<br>";
print "出金:$skin<br>";
で表示されると思います。
この回答への補足
やっぱり500エラーが出てしまいます。。。
何度もいろんなやり方をしたのですが。。。
合計を求めないと正常に動いてくれるCGIですので。。。
ソースを張ります。
間違えてませんよね??
何度もすみません。
http://www.jin.ne.jp/gioia/serchcgi_testpage/ind …
No.2
- 回答日時:
http://www.google.co.jp/search?num=50&hl=ja&q=ja …
cgiでも同じ形で処理できます
この回答への補足
すいません(^^;
せっかくお返事をいただいたのですが、CSVファイルから値を引っ張って合計する方法がわかりませんでした(^^;
No.1
- 回答日時:
>>日付とか摘要で検索できて表示まではできるようになりました。
この表示の時には、foreachやwhileを使い、入金額や集金額の変数もループされると思います。
foreachやwhileの前に、$sum_nyukin = '0'; $sum_shukkin = '0'; と記して、
ループの中に、$sum_nyukin += 入金変数;、$sum_shukkin += 出金変数; を記します。
ループが終わった後に、
print "入金総計:$sum_nyukin <br>";
print "出金総計:$sum_shukkin";
とかで表示されると思います。
serch.cgiは知りませんので、あくまで想像にて失礼いたします。
この回答への補足
ご説明ありがとうございます。。。
早速やってみましたが、500エラーが出てきました(^^;
serch.cgiはレスキューさんのデータベースCGIを参考にしてますので。。。
ここに書いてもいいのでしょうか??
printの表示部分は意味がわかるんですが・・・
************************************************************
■入力
if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }
if ($buffer eq "") { &error('エラー','使い方が間違っています.'); }
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
($name,$value) = split(/=/, $pair);
$name2 = $name;
$value2 = $value;
$FORM2{$name} = $value;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value,'euc');
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\n//g;
$value =~ s/\r//g;
$value =~ s/\t//g;
$value =~ s/\,//g;
#フォーム変数へ
$FORM{$name} = $value;
}
#■検索処理
if (!open(IN,"$file")) { &error('データベース読取エラー','復旧をお待ちください.'); }
@BASE = <IN>;
close(IN);
if ($FORM{'FF'} eq '') { $FF = 0; } else { $FF = $FORM{'FF'}; }
$TO = $FF + $page - 1;
if ($TO > $#BASE) { $TO = $#BASE; }
$hit = 0;
$next_num = '';
foreach $num ($FF .. $#BASE) {
$data = $data2 = $BASE[$num];
&jcode'convert(*data,'euc');
($m,$d,$tekiyou,$inmoney,$outmoney,$bikou) = split(/\,/,$data);
# 摘要(一致)
if ($FORM{'tekiyou'} ne 'all') {
if ($tekiyou eq $FORM{'tekiyou'}) { ; } else { next; }
}
# 検索終了処理
if ($hit == $page) { $next_num = $num; last; }
else { push(@NEW,$data2); $hit++; }
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 法人税 電子帳簿保存法について 1 2022/04/07 11:17
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
希望した番号に更新マークを表...
-
クオートの多重入れ子をするには?
-
「value」に2つの値をセットす...
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
select値をhiddenのvalueに渡し...
-
WEBページを強制的に横画面で見...
-
VB.net データーグリッドビュー...
-
ブックマークからのアクセスを...
-
VB初心者。小数点以下の表示で...
-
チェックボックスの返す値
-
別formのhidden項目を自form値...
-
INPUT TYPE
-
[HTML]プルダウンメニューの横...
-
FORMのselectの選択肢を最初か...
-
チェックボックスとセレクトボ...
-
WEBアプリケーションからフォル...
-
掲示板スパム対策(改造)ガー...
-
while繰り返し処理で買い物かご...
-
MSPゴシックで、一番幅を取る文字
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlからパラメータで、cgiに渡...
-
sendmail 送信先を複数設定す...
-
iis+cgiでmultipart/form-data...
-
フォントサイズを変えるには?
-
CGI経由でのPDFファイルをダウ...
-
perl/cgi リダイレクトができない
-
2つのドメイン、同じサーバー。...
-
サーバー上のPDFにCGIでパスワ...
-
クッキー書き込みが正常に行わ...
-
cgi(perl) sendmailの使い方
-
CGI
-
クッキーを使って投票欄に名前...
-
TOK2で基礎的なCGIをUPしたが動...
-
クオートの多重入れ子をするには?
-
CGIでテキストボックスの内容に...
-
フォームメール(iモード用)で...
-
プログラム実行中の待機ページ...
-
ホームページビルダーで作ったh...
-
substrで数値を抽出してのマッ...
-
perlで重複データを集計
おすすめ情報