使用PHP和MySQL运行平衡

时间:2011-09-16 21:18:47

标签: php mysql

我正在研究一个简单的财务跟踪器,似乎一直试图找出使用PHP和MySQL的简单任务 - 显示正在运行的财务平衡。

有两个MySQL表,一个包含每个帐户的起始余额,另一个包含各个事务。出于开发目的,我只使用一个帐户。我想要做的是迭代交易并显示一个运行总计,如果是提款则从起始余额中减去,如果是存款则从中减去。每笔交易的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存款取款),但有人建议签署的价值是更好的路线。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

负面消极是积极的!例如3 - (-1) == 4

由于您的交易已签名,因此您无需有选择地添加或减去。你可以跳过:

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

替换它
$runningTotal = $runningTotal + $amount;

答案 1 :(得分:1)

你有一个标志错误。

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

记住基本数学:负数减去负数实际上是一个补充。由于您已签名,因此无需<0检查,只需添加所有数字:

$total = $total + $amount;

如果$ amount为负数,它自然会变成减法。