2010-12-16 6 views
3

私はPHPで個人的な財務プログラムを作成していますが、私は簡単にタスクを達成するにはどうしたらいいのでしょうか?小切手帳の残高PHP

トランザクションはMySQLに格納されます。それぞれのトランザクションにはwithdrawのタイプ-1、デポジットのタイプ2があります。以下は、アカウントのバランスを取るための私のPHPです。

//Get the starting balance 
$getStartingBalance = $db->query("SELECT amount FROM startingBalance WHERE id = 1"); 
$startingBalance = $getStartingBalance->fetch(); 
$startingBalance = $startingBalance['amount']; 
//Balance transactions 
    $getAllTransactions = $db->query("SELECT * FROM transactions ORDER BY date"); 
    while ($balanceEntry = $getAllTransactions->fetch()) { 
     $balanceEntryType = $balanceEntry['type']; 
     $balanceEntryAmount = $balanceEntry['amount']; 
     if ($balanceEntryType == "1") { 
      $accountBalance = $startingBalance - $balanceEntryAmount; 
     } else if ($balanceEntryType == "2") { 
      $accountBalance = $startingBalance + $balanceEntryAmount; 
     } 
    } 

おかげ

+0

どうしたのですか? – Ben

答えて

2

$accountBalance = $startingBalance - $balanceEntryAmount;

これは、あなたがオリジナルのバランスマイナス侵入量に現在の残高を設定している。このラインをヒットするたびに意味します。あなたはおそらくあなたのwhileループの前に、割り当てたい:

# or just rename $startingBalance to $accountBalance 
$accountBalance = $startingBalance; 

ともちろん、あなたのwhileループで

$accountBalance = $accountBalance - $balanceEntryAmount; 

あなたも、あなたの条件の他のブランチを修正する必要があると思います。

次回このようなエラーが発生した場合は、ログファイルに各計算の現在の値を出力してみてください。

+0

ああ!もちろん!それはあなたが急いでプログラムするときに起こることです。ありがとうございました:) – NightMICU

2

「トランザクションタイプ」列を格納するのではなく、署名されたトランザクション値を格納するだけの理由は何ですか?

  • それが撤退

この方法だ場合、それは負の預金

  • だ場合、あなたは単純なSQLクエリで口座残高を取得することができます。

    SELECT SUM(amount) FROM transactions;

  • +0

    悪い考えではありません!これは実際に私がお金がどこに行くのか把握するために退屈から始めたプロジェクトです。最後に預金を追加することにしましたが、これは何百ものエントリを持つ最も簡単なソリューションでした。ヒント: – NightMICU

    +0

    このコード*とあなたが作業している他のプロジェクトのコードは、少しのSQL知識で大幅に簡略化することができます。 – jordanstephens

    +0

    実際には、プログラムのカテゴリ別と月別に合計SQLを使用しています。私はこのようなもののためにSQLのそのビットをどのように実装するのか分からなかった。再度、感謝します :) – NightMICU

    関連する問題