`SI_ID is` the Auto Increment Field
`SI_Reg_No` i the student registration number
`SI_Ins_NO` is the installment number
`SI_Due_Date` is the due date of that installment
`SI_Paid_Amount` is the paid amount of each installment
当我的付款表单按钮单击时,我想更新SI_Paid_Amount字段。当我点击付款字段时,表格数据已加载,而没有SI_Paid_Amount。
$amount = 5000.00 // this is what i send to the db for update `SI_Paid_Amount`
如果SI_paid_Amount
应该像bellow一样更新
从第一个SI_Ins_No
开始,如果SI_Ins_amount大于$amount
,它应该更新Si_Paid_Amount字段,它应该停止循环。像贝娄一样
如果SI_Ins_Amount小于发送金额,则应更新第二个SI_Ins_No相关SI_Paid_Amount
列。并且在将数据发送到SI_Paid_Amount
时,我们要根据以前SI_Paid_Amounts
检查金额SI_Ins_No
。所以我的问题是我如何用PHP做到这一点???
答案 0 :(得分:6)
我已经和这个人谈过聊天,并发现了他的追求。基本上它是一个学生可以支付分期付款的表,但他们可以批量或其他任何方式支付。
实施例: 所以我欠了15000,10000和5000的3期。我支付17000英镑,它根据ASC订单中的SI_Ins_No从我的3期中扣除了15000。因此,它会将SI_ID#1和2000中支付的金额加到5000到SI_ID#2
我写了一个小解决方案来帮助
// $rows = "SELECT *, (`SI_Ins_Amount` - `SI_Paid_Amount`) as owed FROM `student_installments` WHERE (`SI_Ins_Amount` + `SI_Paid_Amount`) != 0 AND `SI_Reg_No` = 'COL/A-000041' ORDER BY `SI_Ins_NO` ASC";
$rows = array();
$rows[0]['SI_ID'] = 1;
$rows[0]['SI_Reg_no'] = 'COL/A-000041';
$rows[0]['SI_Ins_Amount'] = '15000';
$rows[0]['SI_Paid_Amount'] = '0';
$rows[0]['owed'] = '15000';
$rows[1]['SI_Ins_NO'] = '1';
$rows[1]['SI_ID'] = 2;
$rows[1]['SI_Reg_no'] = 'COL/A-000041';
$rows[1]['SI_Ins_Amount'] = '10000';
$rows[1]['SI_Paid_Amount'] = '0';
$rows[1]['owed'] = '10000';
$rows[1]['SI_Ins_NO'] = '2';
$rows[2]['SI_ID'] = 2;
$rows[2]['SI_Reg_no'] = 'COL/A-000041';
$rows[2]['SI_Ins_Amount'] = '5000';
$rows[2]['SI_Paid_Amount'] = '0';
$rows[2]['owed'] = '5000';
$rows[1]['SI_Ins_NO'] = '3';
$amount = 27000;
foreach($rows as $r) {
// There's money left
if($r['owed'] - $amount < 0) {
$paying = $r['owed'];
$amount -= $r['owed'];
} else {
// No money left
$paying = ($r['SI_Paid_Amount' + $amount);
$amount -= $paying;
}
// If there's money left
if($paying > 0) {
echo "UPDATE `student_installments` SET `SI_Paid_Amount` = '".$paying."' WHERE `SI_ID` = '".$r['SI_ID']."' \n";
}
}
请随意改进,因为它只是一种快速粗略的方法。
您可以测试此here
你需要添加自己的东西,例如检查金额是否正确,确保它们不会支付太多等等......