0

还有一个问题...

我有以下while循环工作:

    $activityreport = "SELECT $fieldname FROM $table WHERE QuoteID=$quoteid";

    $activity = mysql_query($activityreport) or die(mysql_error());

    while($data = mysql_fetch_array($activity)){

    $amount = $data[$fieldname];

    if($amount>0 && $table != 'OptionFees'){ 
        $amountc = abs($amount);
        }
        elseif($amount>0 && $table == 'OptionFees'){
        $amountd = abs($amount);
        }
        elseif($amount<0 && $table == 'OptionFees'){
            $amountc = abs($amount);
        }
        else{
            $amountd = abs($amount);
        }

    $totald = $totald + $amountd;
    $totalc = $totalc + $amountc;

    echo "<tr><td class='description'>$table</td>
            <td class='debit'>".money_format('%(#10n', $amountd)."</td>
            <td class='credit'>".money_format('%(#10n', $amountc)."</td></tr>";

    }

我的问题是 $totald 和 $totalc 最终只得到最后一次通过 while 循环的结果,而不是所需的所有行程的总数。

如果不是因为 IF 语句分解 $data[$fieldname],我可以只使用 $total += $data[$fieldname],但分解很重要。如您所见,我正在使用它来创建一个表格,该表格将显示 GL 帐户以及它们各自的借方和贷方的日记帐分录。每个帐户的行完美显示,但总数仅显示最后一行的重复。

任何帮助将非常非常感谢!

4

1 回答 1

1

在开始循环之前初始化这些变量:

$activityreport = "SELECT $fieldname FROM $table WHERE QuoteID=$quoteid";

$activity = mysql_query($activityreport) or die(mysql_error());

$totald = 0;
$totalc = 0;

while($data = mysql_fetch_array($activity)){

$amount = $data[$fieldname];
$amountc = 0;
$amountd = 0;

if($amount>0 && $table != 'OptionFees'){ 
    $amountc = abs($amount);
    }
    elseif($amount>0 && $table == 'OptionFees'){
    $amountd = abs($amount);
    }
    elseif($amount<0 && $table == 'OptionFees'){
        $amountc = abs($amount);
    }
    else{
        $amountd = abs($amount);
    }

$totald = $totald + $amountd;
$totalc = $totalc + $amountc;

echo "<tr><td class='description'>$table</td>
        <td class='debit'>".money_format('%(#10n', $amountd)."</td>
        <td class='credit'>".money_format('%(#10n', $amountc)."</td></tr>";

}
于 2012-06-10T13:49:08.767 回答