Veritabanından Sayılar çarpılır / eklenecek reddediyorum

2 Cevap php

Ben bir MySQL veritabanı sayı kümesi çekiyorum ve bir fatura koymak için bir toplam fiyat hesaplamak için onlara bazı basit matematik yapmak için çalışıyorum, ama PHP işbirliği değildir. Ben bu tipi bir zorlama sorunu olabileceğini düşündüm, bu yüzden bazı intval ekleyerek denedim ve floatval çağırır, ama yine toplam daima 0'a çıkıyor.

Burada ilgili kodudur.

$totalSum = 0;
$parts = $db->select("*", "WHERE record_id=$id", "recordparts");

    foreach($parts as &$part) {
        $part['priceTotal'] = (floatval($part['price']) * intval($price['quantity'])) + (floatval($part['laborTime']) * floatval($price['laborRate']));
        $totalSum += $part['priceTotal'];
    }

    $record['parts'] = $parts;
    $record['partsSum'] = $totalSum;

Ve burada yukarıdaki operasyonun sonuçları

parts => Array (1)
  0 => Array (8)
    id => "18"
    partNumber => "92-000001"
    record_id => "17"
    price => "11.5"
    laborTime => "2"
    laborRate => "65"
    quantity => "1"
    priceTotal => 0
partsSum => 0

2 Cevap

Vay, ona baktıktan sonra, sadece bir yazım hatası (iyi, iki) idi. Sebebi ne olursa olsun ben rastgele $parts dizisi $price kullanarak kullanarak geçiş. Benim sorunum sabit sabitleme.

foreach($parts as &$part) {
        $price = floatval($part['price']);
        $quantity = intval($part['quantity']);
        $laborTime = floatval($part['laborTime']);
        $laborRate = floatval($part['laborRate']);

        $part['priceTotal'] = ($price * $quantity) + ($laborTime * $laborRate);
        $totalSum += $part['priceTotal'];
}

Meraktan soruyorum, neden sadece MySQL çarpma yapmak izin vermiyorsun? Ben bu hızlı zaten olacak tahmin ediyorum.

$totalSum = 0;
$parts = $db->select("*, price * quantity AS priceTotal", "WHERE record_id = $id", "recordparts");

foreach($parts as &$part) {
    $totalSum += $part['priceTotal'];
}

$record['parts'] = $parts;
$record['partsSum'] = $totalSum;