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 に答える