2011-02-06 132 views
-1

我想在這裏執行的是能夠將來自sql查詢的值分配給數組。 然後計算總數。如何使用數組來存儲從SQL查詢中獲取的值php

<?php 

include('conn.php'); 

$qreports=query_database("SELECT S_PRICE, PID, QTY_PUR, ITEM_ID, CUSID, CNUM, Cust_Name, TDATE FROM prod_table, customer_credit, sales_trans_items WHERE prod_table.PID=sales_trans_items.ITEM_ID AND sales_trans_items.CNUM=customer_credit.CUSID AND sales_trans_items.TDATE='2011-02-06 09:14:09'","onstor",$link); 

$grandtotal=0; 

$customer=""; 
while($qrep=mysql_fetch_assoc($qreports)){ 


    $pid=$qrep['PID']; 

    foreach ($pid as $k => $v) { 
    $sids=$v; 
    $qtypur=$qrep['QTY_PUR'][$k]; 
    $sprice=$qrep['S_PRICE'][$k]; 
    $customer=$qrep['Cust_Name'][$k]; 
    $tdate=$qrep['TDATE'][$k]; 


    $stot=$qtypur * $sprice; 

    $grandtotal =$grandtotal + $stot; 
} 

} 

echo "Customer: ". $customer."<br/>"; 
echo "Profit: ". $grandtotal; 

>

我試圖在phpMyAdmin的查詢之前,我把它的代碼,它輸出這樣的:? enter image description here

+2

您的問題缺少一個問題。哪裏不對?你的代碼被破壞了嗎?你會得到什麼輸出?你期望/想要哪個輸出? – yankee 2011-02-06 02:23:19

回答

2

我想你誤會了怎麼mysql_fetch_assoc作品:每個呼叫從結果集返回一行$grep是結構爲columnname => valuearray

這也意味着,$qrep['PID']不能是一個數組,你foreach循環將無法正常工作。在每個循環中,$qrep['PID']都包含您在屏幕截圖中的PID列中看到的值中的一個。

,我建議你在while循環添加print_r($qreq);讓您得到更熟悉陣列的結構。

由於每個$qrep本身就是一個數組,創建一個結果數組只是添加每個這些到一個新的數組:

$result = array(); 
while(($qrep=mysql_fetch_assoc($qreports))) { 
    $result[] = $qrep; 
} 

現在正在執行一些計算,我真不知道你要什麼拿到到底,但似乎你是乘以每個QTY_PS_PRICE

$total = 0; 
foreach($result as $report) { 
    $total += $report['QTY_P'] * $report['S_PRICE']; 
} 

(但是,您也計算這while循環)

假設你想要得到的整體之和的總和爲每一個客戶:

$total = 0; 
$total_per_customer = array(); 
foreach($result as $report) { 
    $customer = $report['Cust_Name']; 
    if(!array_key_exists($customer, $total_per_customer)) { 
     $total_per_customer[$customer] = 0; 
    } 
    $price = $report['QTY_P'] * $report['S_PRICE']; 
    $total_per_customer[$customer] += $price; 
    $total += $price; 
} 

最後,$total_per_customer是客戶名稱爲鍵和價格作爲值的總和的陣列。 $total將包含所有價格的總和。

1

你的問題是有點不清楚,但我認爲答案不會是遠離以下建議參考的一種方式:

  • 當你循環行使用 東西像$array[] = $qrep['columnName']來填充 數組。
  • 然後,檢出PHP's array_sum()
相關問題