2011-09-16 13 views
0

私は単純なファイナンス・トラッカーに取り組んでおり、PHPとMySQLを使って何が簡単なタスクであるべきかを把握しようとしているようです。PHPとMySQLでランニング・バランス

2つのMySQLテーブルがあります.1つは各アカウントの開始残高で、もう1つは個々のトランザクションです。開発の目的で、私は1つのアカウントで作業しています。私がしようとしているのは、トランザクションを繰り返し実行し、実行中の合計を表示します。開始時残高から引き出しまたは預金であれば追加します。各取引のamount列には、撤回のために否定的に署名され、預金については積極的に署名されます。ここで

は、私は運なしにしようとしたものです:

<?php 
    $getTransactions = $db->query("SELECT * FROM transactions ORDER BY date, id"); 
    //Get the starting balance 
    $getStartingBalance = $db->query("SELECT amount FROM startingBalance WHERE id = 1"); 
    $startingBalance = $getStartingBalance->fetch(); 
    //Start off with Running Total same as Starting Balance 
    $runningTotal= $startingBalance['amount']; 
    //Iterate through transactions 
    while ($transaction = $getTransactions->fetch()) { 
    $amount = $transaction['amount']; 
    if ($amount < 0) { 
     $runningTotal = $runningTotal - $amount; 
    } else { 
     $runningTotal = $runningTotal + $amount; 
    } 
    } 
?> 

上記の数が負の場合でも、追加を実行します。私はどのように署名された数字でこれを達成するでしょうか?過去には、預金と払い戻しを区別するために整数を使用していました(預金の場合は1、撤回の場合は2)が、署名された値がより良いルートになることが示唆されました。

ありがとうございました

+0

話の道徳は、基本的な数学を覚えている!!恥ずかしいプログラミングが失敗します。 – NightMICU

答えて

1

負のマイナスは肯定的です!たとえば、3 - (-1) == 4

トランザクションが署名されているため、選択的に加算または減算する必要はありません。

if ($amount < 0) { 
     $runningTotal = $runningTotal - $amount; 
    } else { 
     $runningTotal = $runningTotal + $amount; 
    } 

をして、符号誤りを持っているだけで

$runningTotal = $runningTotal + $amount; 
+0

Duh。あなたは数学が私の強い訴訟ではないと言うことができますか? ;)バンチありがとう – NightMICU

+0

これは簡単な間違いです。私は数学を捨てた! –

+0

もう1つの質問 - 今週中にどれくらい費やされたかを示すために引き出しのみを追加するにはどうすればいいですか?署名されていない1の預金と2の預金を使用すると、これは簡単で、署名された番号で対処する方法がわかりませんでした。 – NightMICU

1

に置き換える:あなたはスキップすることができます。

if ($amount is less than zero) { 
    subtract from total 
} else { 
    add to total 
} 

基本的な数式を覚えておいてください:負の数から負の数を引いたものが実際に加算されます。あなたが署名した数字を持っているので、<0チェックの必要はありません、ちょうどすべての数字を追加します。

$total = $total + $amount; 

$量が負の場合、それは自然に減算となります。