Числа из базы данных отказываются быть добавленными / умноженными - PullRequest
0 голосов
/ 19 января 2010

Я вытаскиваю набор чисел из базы данных MySQL и пытаюсь сделать с ними простую математическую задачу, чтобы вычислить общую стоимость для выставления счета, но PHP не сотрудничает. Я подумал, что это может быть проблема приведения типов, поэтому я попытался добавить несколько вызовов intval и floatval, но общее количество всегда получается равным 0.

Вот соответствующий код.

$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;

А вот и результаты вышеуказанной операции

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 ]

1 голос
/ 19 января 2010

Из любопытства, почему бы вам просто не позволить MySQL сделать умножение?Я предполагаю, что это все равно будет быстрее.

$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;
1 голос
/ 19 января 2010

Ух ты, посмотрев на это, это была просто опечатка (ну, два).По какой-то причине я случайно переключаюсь с использования $parts на использование $price в качестве массива.Исправление, которое решило мою проблему.

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'];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...