2015-10-07 124 views
3

我使用我已存儲在php數組中的產品ID從db獲取產品的價格。如何在php中計算總價格

我有一個PHP函數,我想要保存所有購買的產品的總數。在這裏,我正在購物車的物品,我打電話的功能,應該保持總量。每當我從購物車取回產品時,我都會傳遞值price

例如,對於第一個項目迭代我送價值300,和第二400,第三900

我想加起來所有這些,並獲得1600總價在payableAmount() 我怎麼能做到這一點?

function getCartitems($product_id){ 
    $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 
    $sql = "SELECT product_id,product_name,product_price,product_image_url FROM product_list WHERE product_id='$product_id'"; 
    $result = $conn->query($sql);  
    if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) {    
     echo "<tr><td><img class='cart-image img-responsive' src='".$row["product_image_url"]."'></td><td>".$row["product_name"]."</td><td><b>&#8377; </b>".floor($row["product_price"])."</td><td><a href='mycart.php?action=remove&product_id=".$row['product_id']."'><span class='glyphicon glyphicon-remove'></span> remove</a></td></tr>"; 
     $price = $row['product_price']; 
     payableAmount($price);  
     } 
    } else { 
     echo "There are no such items"; 
    } 
    $conn->close(); 
} 

function payableAmount($totalPrice){  
    // calculate total price here 
    $total = $totalPrice; 
    echo $total; 
} 
+1

爲什麼你想有一個函數來計算它可以同時內計算的東西嗎? – Akshay

+0

'$ price = $ price + $ row ['product_price']'....如果你想要總價......把它放在一個循環中。 –

+0

爲什麼你沒有使用while循環來計算總和 –

回答

3

您只需簡單地更新你的查詢,而不是像作爲

$total_price = 0; 
while($row = $result->fetch_assoc()) {    
    echo "<tr><td><img class='cart-image img-responsive' src='".$row["product_image_url"]."'></td><td>".$row["product_name"]."</td><td><b>&#8377; </b>".floor($row["product_price"])."</td><td><a href='mycart.php?action=remove&product_id=".$row['product_id']."'><span class='glyphicon glyphicon-remove'></span> remove</a></td></tr>"; 
    $total_price += $row['product_price']; 
} 
+0

但是它會對給定的product_id在循環中起作用嗎?因爲每次查詢都會得到不同的product_id。所有的價格都要計算。 –

+0

然後它不會工作,那麼你只需要簡單的價格總和。我會更新它 –

+0

我嘗試過,但我沒有得到總計。而是我得到每個前例的價格:項目1 => 35000,項目2 => 16000總計應該是51000,但我越來越3500016000 –

2

只是外界宣佈總 -

$total =0; 
function payableAmount($totalPrice){  
    // calculate total price here 
    global $total; 
    $total += $totalPrice; 
    echo $total; 
} 
+0

? :)除非使用全局變量或其他更聰明的解決方案,否則將無法工作我的朋友 – Robert

+0

感謝@羅伯特,很着急..現在修復了 –

0

創建函數外部的變量。然後,您將函數的價格添加到該變量中。並使用

$total += $totalprice. 
1

使用while循環計算價格。聲明一個變量$totalPrice,然後在while循環內求和它。

function getCartitems($product_id){ 
    $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 
    $sql = "SELECT product_id,product_name,product_price,product_image_url FROM product_list WHERE product_id='$product_id'"; 
    $result = $conn->query($sql);  
    if ($result->num_rows > 0) { 
     $totalPrice = 0; 
     while($row = $result->fetch_assoc()) {    
     echo "<tr><td><img class='cart-image img-responsive' src='".$row["product_image_url"]."'></td><td>".$row["product_name"]."</td><td><b>&#8377; </b>".floor($row["product_price"])."</td><td><a href='mycart.php?action=remove&product_id=".$row['product_id']."'><span class='glyphicon glyphicon-remove'></span> remove</a></td></tr>"; 
     $price = $row['product_price']; 
     $totalPrice += $price;  
     } 
    } else { 
     echo "There are no such items"; 
    } 
    $conn->close(); 
} 
0

你可以簡單地將它存儲在變量添加在環路的價格,得到相同的。

payableAmount($ price); //不需要調用不同的函數,因爲它只返回當前價格,而不是這個,您可以添加下面給出的價格 $ total_price + = $ price;

0

您需要在您的payableAmount簡單的修改()函數

function payableAmount(&$totalPrice){  
    // calculate total price here 
    $totalPrice += $totalPrice; 
} 

變量通過引用現已通過這樣它會修改你這樣做後,你可以回聲$ totalPrice,它會被改變,另2選項是使用靜態變量或全局。但是,如果我是你,我不會使用函數來完成這樣簡單的任務。循環之前和內環$total += $price;只是聲明$total,它是足夠

0
if ($result->num_rows > 0) { 
     $totalPrice = 0; // Initialice the var before to go into the while loop 
     while($row = $result->fetch_assoc()) {    
      echo "<tr> 
       <td><img class='cart-image img-responsive' src='".$row["product_image_url"]."'></td> 
       <td>".$row["product_name"]."</td><td><b>&#8377; </b>".floor($row["product_price"])."</td> 
       <td><a href='mycart.php?action=remove&product_id=".$row['product_id']."'> 
        <span class='glyphicon glyphicon-remove'></span> remove</a></td> 
       </tr>"; 
      // increment the price... 
      $totalPrice += $row['product_price']; 
     } 
     // Now you can use the $totalPrice var 
    } else { 
     echo "There are no such items"; 
    } 
+0

這會產生一個警告:undefined totalprice –

+0

好吧,嘗試初始化var之前進入while循環:-) – Chemaclass