2013-09-26 97 views
0

我創建了一張發票表,該表提供數據庫表中的行,其中數據庫中的訂單ID等於在URL中傳遞的值。桌子完美地工作。以下是代碼:如何將計算行添加到一起以形成總計

$result = mysqli_query($con,"SELECT * FROM b_sale_basket WHERE ORDER_ID=$ID LIMIT 10"); 

while($row = mysqli_fetch_array($result)) { 
$quantity = $row['QUANTITY']; 
$description = $row['NAME']; 
$unitprice = $row['PRICE']; 
$lineprice = $row['PRICE']*$row['QUANTITY']; 

$tbl_header = '<table style="width: 650px;" cellspacing="0" cellpadding="5">'; 
$tbl_footer = '</table>'; 
$tbl = ''; 

// foreach item in your array... $tbl .= ' 
    <tr> 
     <td style="width: 50px; text-align: left; border-bottom: 0.1em solid #808080;"><p style="color:#808080;">'.number_format($quantity,0).'</p></td> 
     <td style="width: 350px; border-bottom: 0.1em solid #808080;"><p style="color:#808080;">'.$description.'</p></td> 
     <td style="width: 125px; text-align:right; border-bottom: 0.1em solid #808080;"><p style="color:#808080;">'.number_format($unitprice,2).'</p></td> 
     <td style="width: 125px; text-align:right; border-bottom: 0.1em solid #808080;" align="right" ><p style="color:#808080;">'.number_format($lineprice,2).'</p></td> 
    </tr> '; 

此代碼循環順序中的所有行。它顯示:

Quantity  | Product Name  | Price  | Line Total 
1   | Gold Frame  | £10.00 | £10.00 
3   | Silver Frame  | £5.00  | £15.00 

所以我的問題。我如何獲得總數的總和,因此對於上面的例子,我希望GRAND TOTAL等於25.00英鎊。

我知道會有一個GROUP BY ID,但我不知道如何將每個行的多個數值*價格一起添加。

任何幫助,將不勝感激。

+0

您正在尋找僅限SQL的解決方案嗎?因爲PHP循環能夠自行計算這個... –

+0

ps.s.您的查詢容易受到SQL注入的影響。 – naomik

回答

1

在循環之前開始引入新的變量,並增加了在每個循環迭代$ lineprice值。

$result = mysqli_query($con,"SELECT * FROM b_sale_basket WHERE ORDER_ID=$ID LIMIT 10"); 

$total=0; 
while($row = mysqli_fetch_array($result)) { 
$quantity = $row['QUANTITY']; 
$description = $row['NAME']; 
$unitprice = $row['PRICE']; 
$lineprice = $row['PRICE']*$row['QUANTITY']; 
$total=$total+$lineprice; 

$tbl_header = '<table style="width: 650px;" cellspacing="0" cellpadding="5">'; 
$tbl_footer = '</table>'; 
$tbl = ''; 

// foreach item in your array... $tbl .= ' 
    <tr> 
     <td style="width: 50px; text-align: left; border-bottom: 0.1em solid #808080;"><p style="color:#808080;">'.number_format($quantity,0).'</p></td> 
     <td style="width: 350px; border-bottom: 0.1em solid #808080;"><p style="color:#808080;">'.$description.'</p></td> 
     <td style="width: 125px; text-align:right; border-bottom: 0.1em solid #808080;"><p style="color:#808080;">'.number_format($unitprice,2).'</p></td> 
     <td style="width: 125px; text-align:right; border-bottom: 0.1em solid #808080;" align="right" ><p style="color:#808080;">'.number_format($lineprice,2).'</p></td> 
    </tr> '; 

一旦你完成循環添加<tr><td>並打印總數。

+0

完美工作。謝謝。 – andy

3

只需添加它,而你遍歷結果:

$total = 0; 
while($row = mysqli_fetch_array($result)) { 
    $quantity = $row['QUANTITY']; 
    $description = $row['NAME']; 
    $unitprice = $row['PRICE']; 
    $lineprice = $row['PRICE']*$row['QUANTITY']; 
    $total += $lineprice; 
} 

echo $total;