2015-01-03 2 views
0

내 웹 페이지에서이 함수를 호출하면 장바구니에있는 제품의 총 가치를 반향 출력해야하지만 제품 ID가 가장 높은 제품의 값만 표시됩니다. 이 값들의 합계 대신에.PHP 배열 및 배열 합계가 올바른 값을 반환하지 않습니다.

function total_price() { 

    $total = 0; 
    global $link; 
    $ip = getIp(); 
    $sel_price= "select * from cart where ip_add='$ip'"; 
    $run_price= mysqli_query($link, $sel_price); 

    while($p_price=mysqli_fetch_array($run_price)) { 
     $pro_id = $p_price['id']; 
     $pro_price = "select * from products where id='$pro_id'"; 
     $run_pro_price = mysqli_query($link, $pro_price); 
     while ($pp_price = mysqli_fetch_array($run_pro_price)){ 
      $product_price = array($pp_price['prijs']); 
      $values = array_sum($product_price); 
      $total = number_format((float)$values, 2, ',', ''); 
     } 
    } 
    echo "€ " .$total; 

} 
+0

. 따라서 합계는 해당 요소의 값입니다. 이전 행에 추가하지 않습니다. – Barmar

+1

쿼리에서'SELECT SUM (prijs) AS total'을 사용하지 않는 이유는 무엇입니까? – Barmar

답변

1

array_sum을 사용할 이유가 없습니다. 하나의 요소가있는 배열의 합계는 해당 요소의 값입니다. 각 가격을 배열로 밀어 넣은 다음 루프 끝에서 합계를 계산하는 경우 array_sum을 사용합니다. 그러나 매번 루프를 통해 총 가치에 추가 할 수 있으므로 그렇게 할 필요가 없습니다.

while ($pp_price = mysqli_fetch_array($run_pro_price)){ 
     $values += $pp_price['prijs']; 
    } 
} 
$total = number_format((float)$values, 2, ',', ''); 
echo "€" . $total; 

또한 단일 쿼리에서 모든 것을 할 수 있습니다 : 당신은 다음에`) (`array_sum을 사용하여, 그것은 하나 개의 가격으로 배열을 만들

$sel_total = "SELECT SUM(prijs) AS total 
       FROM cart 
       JOIN products ON cart.id = product.id 
       WHERE ip_add = '$ip'"; 
$res = mysqli_query($sel_total); 
$row = mysqli_fetch_assoc($res); 
$total = number_format($row['total'], 2, ',', ''); 
echo "€" . $total; 
+0

thxx입니다. 이건 저를 위해 고쳐졌습니다. –

0
$total += number_format((float)$values, 2, ',', ''); 

왜 문을 조인을 사용하려고 그나마 BTW

+0

총계를 계산 한 후에'number_format'을 사용해야합니다. – Barmar

+0

당신은 맞습니다 ....하지만 제 목표는 그에게 약간의 힌트를주기 위해서였습니다 –

0
<?php 
function total_price() { 
    $values = 0; 
    $total = 0; 
    global $link; 
    $ip = getIp(); 
    $sel_price= "select * from cart where ip_add='$ip'"; 
    $run_price= mysqli_query($link, $sel_price); 

    while($p_price=mysqli_fetch_array($run_price)) { 
     $pro_id = $p_price['id']; 
     $pro_price = "select * from products where id='$pro_id'"; 
     $run_pro_price = mysqli_query($link, $pro_price); 
     while ($pp_price = mysqli_fetch_array($run_pro_price)){ 
      //$product_price = array($pp_price['prijs']); 
      //this will cumulate sum 
      $values += $pp_price['prijs']; 
      //$total = number_format((float)$values, 2, ',', ''); 
     } 
    } 
    //this will format result 
    $total = number_format((float)$values, 2, ',', ''); 
    echo "&euro; " .$total; 

} 

작동합니다 ???

+0

'array_sum'을 제거하십시오. '$ values ​​+ = $ pp_price [ 'prijs']'이어야합니다. – Barmar

+0

예 당신은 당신의 도움을 위해 – pesoklp13

관련 문제