2015-04-02 40 views
-2

我試圖從我已經存儲值的數據庫中讀取。我試圖在每一天添加所有的值,並編寫了下面的代碼來實現這一點。出於某種原因,只有第一天的行正在被總結。我確信有一個原因,我的一個循環的條件不起作用,但我想我是在看它。任何快速瀏覽讚賞。好奇爲什麼循環不顯示第二天的數據:

$readsum =array(); 
$totalsum = 0; 


for ($i=1; $i <= $numdays; $i++){ 
$readresult=mysql_query("SELECT * FROM `test`.`cost_table` WHERE `Day`='$i'",$LinkID); 



while($rows=mysql_fetch_array($readresult)){ 
    $readsum[]=$rows['Yield']; 
    $readsum[]=$rows['Rolls']; 
    $readsum[]=$rows['Utilities']; 
    $readsum[]=$rows['Payroll']; 
    $readsum[]=$rows['Direct Materials']; 
    $readsum[]=$rows['3rd Party']; 
    $readsum[]=$rows['Supplies']; 
    $readsum[]=$rows['Packaging']; 
    $readsum[]=$rows['Rental']; 
    $readsum[]=$rows['Other']; 
} 

for($i=0; $i <= 9; $i++){ 
    $totalsum = $totalsum + $readsum[$i]; 
    } 


echo $totalsum; 
$totalsum = 0; 

} 

現在,輸出只有一個值;數據庫第一行的總和。作爲本月的第二天,它應該計算第二筆金額並回應它。

+1

您在兩個循環中都使用迭代器('$ i')的相同變量名稱。這可能會導致問題。此外,你不應該在循環中查詢。你應該查詢整個集合,然後遍歷結果。 – dan08 2015-04-02 19:38:50

+0

^您還需要查看縮進。可能你忘了第二個'for'循環由於缺少縮進而在另一'for for循環中。 – developerwjk 2015-04-02 19:56:43

回答

0

要在我的評論擴大這裏是我會怎麼重寫代碼來改善它:

$readsum =array(); 
$totalsum = 0; 

$readresult=mysql_query("SELECT * FROM `test`.`cost_table` ORDER BY `Day`",$LinkID); 

while($rows=mysql_fetch_array($readresult)){ 
    $readsum[$rows['Day']][]=$rows['Yield']; 
    $readsum[$rows['Day']][]=$rows['Rolls']; 
    $readsum[$rows['Day']][]=$rows['Utilities']; 
    $readsum[$rows['Day']][]=$rows['Payroll']; 
    $readsum[$rows['Day']][]=$rows['Direct Materials']; 
    $readsum[$rows['Day']][]=$rows['3rd Party']; 
    $readsum[$rows['Day']][]=$rows['Supplies']; 
    $readsum[$rows['Day']][]=$rows['Packaging']; 
    $readsum[$rows['Day']][]=$rows['Rental']; 
    $readsum[$rows['Day']][]=$rows['Other']; 
} 

//var_dump $readsum to see what you have to work with 

foreach($readsum as $day=>$dataArray){ 
    foreach($dataArray as $rsum){ 
    $totalsum = $totalsum + $rsum; 
    } 
    echo $totalsum; 
    $totalsum = 0; 
} 

基本上你做你的查詢在整個集。

通過結果來建立一個很好的方便與關聯數組一起工作。

然後使用該數組來做任何你想要的數據。

更多的可重用和易於理解。

相關問題