У меня проблема с разбивкой суммы данного платежа, я думаю, что что-то упустил в моем коде. Это моя таблица ниже.
Если у меня есть платеж 5000, он вычитается в первом ряду, а оставшаяся сумма отправляется во второй ряд.
//это платеж
$payment = 5000;
$temp = '';
//цикл функции
$data = payment_breakdown();
foreach ($data as $row) {
$amount = $row['AMOUNT'] - $payment."\n";
}
//обрабатываем разницу в каждом цикле функции
$temp = $amount;
//результат суммы
echo $amount;
//это моя функция для получения данных из таблицы
function payment_breakdown(){
$db = database2();
$query = "SELECT AMOUNT FROM TABLE1";
$cmd = $db->prepare($query);
$cmd->execute();
$rows = $cmd->fetchAll();
$db = null;
return $rows;
}
предположительно, если сумма на столе это
Data From Table | The Payment
3000 | 3000
3000 | 2000
Вы можете сделать это в SQL:
SELECT
amount,
paid,
sum(amount-paid) open
FROM
payment
GROUP BY amount, paid
WITH ROLLUP
HAVING
amount IS NULL
OR paid IS NOT NULL
;
На основании данных
INSERT INTO payment (amount, paid)
VALUES
(3000,3000),
(3000,2000),
(4000,1000)
;
ты получаешь
amount;paid; open
3000 ;2000; 1000
3000 ;3000; 0
4000 ;1000; 3000
NULL ;NULL; 4000
Или вы можете захотеть простое вычитание из депозита:
SET @credit := 5000;
SELECT
amount,
@credit := @credit-amount credit
FROM payment
;
SELECT @credit;
Тем не менее, в последнем случае вы должны хранить все платежи и суммы для внесения в таблицы базы данных и суммировать все вместе. Рассмотрите возможность рефакторинга вашей структуры базы данных.
The Payment
столбцеThe Payment
указаны неверные данные?$temp += $amount;