2017-09-06 30 views
-1

私はPHPで合計を作ることに問題があります。合計金額をPHPの小計でMySQLから

私はWeb App(PHPベース)で合計したいですが、データベースMySQLから小計を取得します。それをテーブルに印刷します。

ここでは、私のコードです:

<table class="ui single selectable table"> 
    <tbody> 
    <?php 
    $idTrx = $_POST['idTrx']; 
    $idUser = substr($idTrx, 3); 
    $total; 

    $query = "select trx.id_trx, tempTrx.id_user, tempTrx.nameProduct as nameProduct, tempTrx.price as price, tempTrx.qty as qty, tempTrx.subtotal as subtotal from trx,tempTrx where (trx.id_trx='" . $idTrx . "' and trx.status='1') and tempTrx.id_user='" . $idUser . "';"; 

    $result = mysqli_query($link, $query); 


    while ($data = $result->fetch_array(MYSQLI_ASSOC)) { 
     echo "<tr><td>x</td><td>".$data['nameProduct']."</td><td>".$data['price']."</td><td>" 
     .$data['qty']."</td><td>".$data['subtotal']."</td></tr>"; 

     for ($i=0; $i < count($data) ; $i++) { 
     $total += $data['subtotal']; 
     } 
    } 

    ?> 
    </tbody> 
    <tfoot> 
    <tr> 
     <th> 
     Total 
     </th> 
     <th></th> 
     <th></th> 
     <th></th> 
     <th><?php echo $total ?></th> 
    </tr> 
    </tfoot> 
</table> 

私は$dataの特定の量で$data['subtotal']から合計を作成する方法がわかりません。

$total += $data['subtotal'];を追加しても、それでも正しい$totalが得られません。

+0

コードの問題点を明確にすることはできますか?すべての '$ data ['小計']を' $ total'に追加しているようです。 '$ total'は正しくありませんか?なぜ 'while'ループの中で' for'ループを実行していますか? – neuromatter

+0

@neuromatter - はい、すべての '$ data ['小計']'を '$ total'に追加しました。しかし、 '$ total'はまだまだまだです。私は 'while'ループの中で' for'ループを作成します。そのようにすれば、 '$ data ['小計']'をすべて得ることができ、それから合計を得ることができます。 – Syarif

+0

'for'ループを削除して、' $ total + = $ data ['subtotal']; 'を残してみてください。小計の例とその合計(不正確な合計額)の例を挙げることができますか? – neuromatter

答えて

0

$ totalの正しい値を取得するには、queryから返された各値に対して、$ data ['subtotal']の値を$ totalに追加します。 whileループでクエリの各結果を調べているため、forループは必要ありません。現在の方法では、$ data ['subtotal']の現在の値を$ countに複数回(count($ data)ごとに1つずつ追加しています)、count($ data)が10の場合、 $データの値は[ '小計']各列当たり10回。単に$合計に[ '小計'] $データの現在の値を追加する。

$total += $data['subtotal']; 

変化

for ($i=0; $i < count($data) ; $i++) { 
    $total += $data['subtotal']; 
} 

0

パラメータ化されたクエリに関して他の人が行っている有効な点を受け入れると、これは読みやすくなります。

SELECT a.id_trx 
    , b.id_user 
    , b.nameProduct 
    , b.price 
    , b.qty 
    , b.subtotal 
    FROM trx a 
CROSS 
    JOIN tempTrx b 
WHERE a.id_trx = ? 
    AND a.status = 1 
    AND b.id_user= ? 
関連する問題