2014-09-28 81 views
0

我有一個函數應該根據數量計算價格。
函數應該循環遍歷每個訂單並基於數量計算每個產品的價格,然後返回訂單總價格。
我做錯了什麼?PDO for loop問題

public function getSumaComanda($cos) { 
    $suma = $this->_db->query(sprintf("SELECT (@pretredus:=`pretredus`) AS `pretredus`,(CASE @pretredus WHEN 0 THEN `prettotal` ELSE `pretredus` END) AS `prettotal` , cantitate FROM comenzi WHERE cos = '%d'", $cos)); 
    $suma->execute(); 
    $data_array = $suma->fetchAll(PDO::FETCH_ASSOC); 

    $count = $this->_db->query(sprintf("SELECT COUNT(*) FROM cosuri WHERE id='%d'", $cos)); 
    $num = $count->fetchColumn(); 


    for ($x = 0; $x < $num; $x++) { 
     $price = $data_array['cantitate'][$x] * $data_array['prettotal'][$x]; 
     $pret = $pret + $price; 
     $pret = number_format($pret, 2, ".", ""); 

    } 

    $rez = $pret; 
    return $rez . ' Lei'; 
} 
+0

問你做錯了什麼之前,先說你認爲你在做什麼,你希望得到的結果是什麼是,結果*實際*是什麼,以及爲什麼你認爲這是錯誤的。這會幫助我們理解您的流程,並且可以幫助您發現問題,甚至可能在問題發現之前發現問題,只需寫出這些步驟即可發現問題。 – 2014-09-28 04:46:54

+0

該函數應循環遍歷每個訂單,並根據數量計算每個產品的價格。 – ciprian2301 2014-09-28 04:50:28

+0

不要告訴我,通過編輯你的帖子告訴大家在Stackoverflow上。通過我詳細描述的那些步驟,描述它,就好像你將它寫給一個知道如何編程的朋友,而不是關於你的項目。他們會想要更多的細節來幫助你。我們也是。 – 2014-09-28 04:51:31

回答

1

你應該學會如何基本調試你的變量。使用var_dump($data_array);您可以看到,裏面有什麼。

你必須首先使用數字索引:

$price = $data_array[$x]['cantitate'] * $data_array[$x]['prettotal']; 

儘管如此,你的第二個查詢是沒有用的。您不必計算結果,並可以使用,而不是while循環:

public function getSumaComanda($cos) { 
    $suma = $this->_db->query(sprintf("SELECT (@pretredus:=`pretredus`) AS `pretredus`,(CASE @pretredus WHEN 0 THEN `prettotal` ELSE `pretredus` END) AS `prettotal` , cantitate FROM comenzi WHERE cos = '%d'", $cos)); 
    $suma->execute(); 

    while ($data_array = $suma->fetch(PDO::FETCH_ASSOC)) { 
     $pret += $data_array['cantitate'] * $data_array['prettotal']; 
    } 

    return number_format($pret, 2, ".", "") . ' Lei'; 
}