在金融工作追踪,并已运行到有点障碍与降序排列显示交易(最新到最旧)。 这里是我使用的SQL:平衡账户而递减顺序选择的MySQL行 - 用正确的运行平衡代码更新
SELECT amount, payee, cat, date FROM transactions ORDER BY id DESC, date DESC
我使用一个类来处理这个程序,并显示该交易功能的其他方面是它的一部分。如果我是显示在升序交易,下面的代码按预期工作:
//Fetch the transactions
public function fetchTransactions() {
global $db;
$this->getStartingBalance();
$runningTotal = $this->startingBalance;
$fetchTransactionsSQL = $db->query("SELECT amount, payee, cat, date FROM transactions ORDER BY id, date");
while ($transactionDetails = $fetchTransactionsSQL->fetch()) {
$payee = stripslashes($transactionDetails[payee]);
$category = $transactionDetails['cat'];
$amount = money_format("%n", $transactionDetails[amount]);
$runningTotal = $runningTotal + $transactionDetails['amount'];
$runningTotalOutput = money_format("%n", $runningTotal);
echo "
<tr>
<td class=\"payee\">$payee</td>
<td>$category</td>
<td>$amount</td>
<td class=\"runningTotal\">$runningTotalOutput</td>
</tr>";
}
}
憋屈试图在递减顺序与正确的运行平衡显示 - 例如,如果$this->startingBalance
值是$ 354.00和第一个(因此最后以desc顺序显示)交易价格为4.00美元,最后一笔交易额为350.00美元。这些号码已经签署。
非常感谢!
更新的代码
沿drew010的意见的线之后,我想起了一个方便的小功能 - array_reverse。我更新了函数以包含事务数组,并将其颠倒过来,然后遍历数组,以正确的运行余额按升序显示事务。
我刚碰到的另一个问题是索引事务的问题 - 例如,只显示当前月份的事务,同时保持正确的运行平衡。下面更新的代码解决了以正确的顺序显示所有交易的问题,并且没有限制返回的行的问题。
这里是更新的代码,建议表示赞赏。
public function fetchTransactions() {
global $db;
$this->getStartingBalance();
$runningTotal = $this->startingBalance;
//Array to contain the transactions
$transactions = array();
//Counter for transactions array key
$i = 0;
$fetchTransactionsSQL = $db->query("SELECT amount, payee, cat, date FROM transactions ORDER BY id, date");
while ($transactionDetails = $fetchTransactionsSQL->fetch()) {
$payee = stripslashes($transactionDetails[payee]);
$category = $transactionDetails['cat'];
$amount = money_format("%n", $transactionDetails[amount]);
$runningTotal = $runningTotal + $transactionDetails['amount'];
$runningTotalOutput = money_format("%n", $runningTotal);
$transactions[$i] = array("payee" => $payee, "category" => $category, "amount" => $amount, "runningTotal" => $runningTotalOutput);
$i++; //Increment the array key
}
$transactions = array_reverse($transactions); //Reverse the transactions array to display in ascending order
//Iterate over transactions array
foreach ($transactions as $transaction) {
$payee = $transaction['payee'];
$category = $transaction['category'];
$amount = $transaction['amount'];
$runningTotal = $transaction['runningTotal'];
echo "
<tr>\n
<td>$payee</td>\n
<td>$category</td>\n
<td>$amount</td>\n
<td>$runningTotal</td>\n
</tr>\n
";
}
}
什么是$ this-> startingBalance?如果您指定月份,是否会为指定的日期约束获取起始余额? – Naltharial
起始余额是帐户添加到应用程序时的初始余额。例如。如果用户在开始时的价值为359美元,那么该帐户将与帐户名称和帐户类型一起保存在帐户表中。余额通过将交易总额(金额的签名整数)与开始金额相加来计算。 – NightMICU