2017-01-10 2 views
-3

Я пытаюсь получить общую стоимость от стола. Product_price в другой таблице, которая является продуктом. Я получаю только самую последнюю цену, а не общую цену. Благодаряобщая сумма массива с использованием pdo

// function total_price(){ 

$total = 0; 

global $db; 
$ip = getIp(); 

    $sql = $db->query("SELECT * from cart WHERE ip_add='$ip'"); 

    $no=$sql->rowCount(); // number of rows affected by the last SQL statement 
    if ($no == 0){ 
     echo ""; 


    } else { 
     foreach($sql as $row) 

      $product_id = $row["p_id"]; 
      $sql = $db->query("SELECT product_price from product WHERE product_id='$product_id'"); 
      $no=$sql->rowCount(); // number of rows affected by the last SQL statement 
      if ($no == 0){ 
      echo ""; 
      } 
      else 
      { 
      foreach($sql as $row) 
      $product_price = array($row["product_price"]); 

      $values = array_sum($product_price); 
      $total += $values; 

      } 
    } 

    echo "RM" . $total; 

     } 
+0

, если все, что вам нужно, это сумма цен корзины товаров, вы можете сделать это с один запрос – nogad

+0

'fetch' только тянет одну строку. Переверните его. Также 'ip' не уникален для пользователя. Вы также открыты для SQL-инъекций, параметризуете. – chris85

ответ

1

, если я читаю структуру право это один запрос должен быть все, что вам нужно:

select sum(product_price) from product 
inner join cart on product.product_id=cart.product_id 
+0

i изменить этот код, но нет выхода для общей ценовой функции total_price() { global $ db; $ ip = getIp(); $ запрос = $ db-> подготовить (» SELECT SUM (p.product_price * c.quantity) AS Всего из корзины AS с РЕГИСТРИРУЙТЕСЬ продукт AS р О p.product_id = c.p_id WHERE c.ip_add =: ip '); $ query-> bindParam (': ip', $ ip); $ query-> execute(); $ row = $ query-> fetch (PDO :: FETCH_ASSOC); if ($ row) { $ total = (float) $ row ['total']; } else { $ total = 0; } return $ total; } – linda

Смежные вопросы