У меня есть небольшая программа для биллинга, написанная на php CodeIgniter. Так я сохраняю значения при отправке платежа
<?php
public function addPayment() {
$id = $this->input->post('id');
$client_id = $this->input->post('client_id');
$date = strtotime($this->input->post('date_from_addpayment'));
$description = $this->input->post('description');
$cash_pending = $this->input->post('cash_pending');
$cash_recevied = $this->input->post('cash_recevied');
$balance = $cash_pending - $cash_recevied;
?>
Когда происходит каждая транзакция, я хочу суммировать всю задолженность клиента за это время и сохранить ее в таблице баланса в MySQL.
Моя PHPMySQL структура столбца оплаты выглядит следующим образом:
https://i.stack.imgur.com/ELJrL.png
Я просто хочу, чтобы, когда пользователь ДОБАВИЛ ОПЛАТУ, баланс в это время отображался в этом столбце.
Скриншот: https://i.imgur.com/raboF4M.png
Насколько я понимаю, баланс, причитающийся, cash_pending — все 3 поля относятся — относится к одной и той же цифре — сумма, которая ожидает. Я верю, что вам нужно немного реструктурировать код.
Вам необходимо иметь таблицу, поддерживающую баланс клиентов (например, текущую). Просто вы можете удалить cash_pending / due поля.
Затем вам нужно иметь другую таблицу, в которой будут записываться в транзакции все полученные денежные средства. А когда и когда будут получены деньги, вы можете просто вычесть эту сумму из баланса для клиента.
В случае, если необходимо добавить любую избыточную сумму для чего-то вроде выданных наличных или около того — вы можете добавить их обратно в поле баланса клиента. Так что все время — у вас есть правильный баланс для клиента, а также есть запись всех денежных средств, полученных от пользователя.
Прежде чем заканчивать тег php, закройте фигурную скобку вашей функции.
В вашей таблице идентификатор является автоинкрементным, поэтому не нужно принимать идентификатор в качестве входа для хранения в базе данных.
поместите все обязательные поля как структуру таблицы следующим образом.
$data = array('client_id'=>$client_id, 'date'=>$date,
'description'=>$description, 'cash_recevied'=>$cash_recevied, 'cash_pending'=>$cash_pending,
'due'=>$due );
$this->load->model('Your-model-name');
$this->your-model-name->function-name($data);
Теперь назовите свою модель. а затем в вашей модели сделать это
function FunctionName($data){
return $this->db->insert('tablename', $data);
}