支票簿余额PHP

时间:2010-12-16 00:00:11

标签: php mysql

我正在使用PHP制作个人理财计划,而且我已经陷入了应该轻松完成的任务 - 平衡帐户。

事务存储在MySQL中,每个事务都有一个类型 - 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;
        }
    }

有什么想法吗?感谢

2 个答案:

答案 0 :(得分:2)

$accountBalance = $startingBalance - $balanceEntryAmount;

这意味着每当您点击此行时,您将当前余额设置为原始余额减去条目金额。你可能想在while循环之前分配:

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

然后在你的while循环中

$accountBalance = $accountBalance - $balanceEntryAmount;

当然,你也必须修改条件的另一个分支。

下次出现类似错误时,请尝试在日志文件中输出每个计算的当前值 - 您可以非常快速地计算出来。

答案 1 :(得分:2)

为什么不存储已签名的交易值,而不是存储“交易类型”列?

  • 肯定如果是存款
  • 否定如果是撤回

这样,您可以通过简单的SQL查询获得帐户余额。

SELECT SUM(amount) FROM transactions;