亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP和MYSQL計算學生總余額

PHP和MYSQL計算學生總余額

PHP
慕蓋茨4494581 2023-10-01 15:55:08
我有這個問題,首先要獲取學生總數,然后是 amount_paid 列中學生支付的總金額,我正在查詢所有學生 id(system_id),然后是每筆付款,然后是發票和發票的成本費用目標是與學生匹配的 id。最后,我嘗試減去循環中發送給選定學生的所有發票的總金額,然后從同一循環中發送給目標學生的費用中減去它?,F在,我的許多問題是,對于第一批學生來說,它正在計算余額罰款,但其余的余額正在迅速增加。請問我的代碼問題出在哪里:<?php$students = mysqli_query($conn, "SELECT * FROM students GROUP BY system_id");while($row = mysqli_fetch_assoc($students)){    $user_uid = $row['system_id'];    $exam = $row['exam_number'];   //getting payments balances//gettingshopping cart details      $Balance_query = mysqli_query($conn,  "SELECT SUM(amount_paid) AS 'sumitem_cost' FROM payments WHERE payment_by='$user_uid' ");          $balance_data = mysqli_fetch_array($Balance_query);      $balance_price = $balance_data['sumitem_cost'];            $py = mysqli_query($conn, "SELECT * FROM payments WHERE payment_by='$user_uid' AND status!='rejected' GROUP BY invoice_id");      while($rowpy = mysqli_fetch_assoc($py)){                    $paidAmout = $rowpy['amount'];          $invoiceId = mysqli_real_escape_string($conn, $rowpy['invoice_id']);          $PaymentStatus = mysqli_real_escape_string($conn, $rowpy['status']);          //Getting invoice          $Invoice = mysqli_query($conn, "SELECT * FROM invoices WHERE id='$invoiceId'");                    while($rowInv = mysqli_fetch_assoc($Invoice)){          $NewFeeId = $rowInv['id'];                    $sql = mysqli_query($conn,"SELECT SUM(fee) as total FROM invoices WHERE id='$invoiceId'");         $row = mysqli_fetch_array($sql);          $sum = $row['total'];          $total_price += $row[‘fee’];      }}     echo'<br>'.$exam.':' . $BalanceToPay =  $total_price - $balance_price;      }?>
查看完整描述

3 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

你有一些奇怪的疑問。單引號絕對不能用于列別名,為什么要按 system_id 分組?通過使用聯接,您的計算將大大簡化,如果我是您的老師,我希望看到聯接。


這將立即解決分配問題:


SELECT s.system_id

,      sum(amount_paid) as sumitem_cost

,      sum(fee) as total

FROM students s

JOIN payments p on s.system_id = p.payment_by

JOIN invoices i on p.invoice_id = i.id


查看完整回答
反對 回復 2023-10-01
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

$total_price每次與新學生打交道時,您都需要歸零(init) 。您沒有明確地這樣做,因此第一次使用$total_price它時會被創建為零,但隨后您會進一步迭代并不斷添加它,最終得到累積值。所以只需添加


$total_price = 0;

對于每個while循環迭代:


while($row = mysqli_fetch_assoc($students)){

    $total_price = 0;

    ...


查看完整回答
反對 回復 2023-10-01
?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

你可以試試這個代碼


    <?php

$students = mysqli_query($conn, "SELECT * FROM students GROUP BY system_id");

$grandBalanceForAllStudent = 0 ;

while($row = mysqli_fetch_assoc($students)){

    $user_uid = $row['system_id'];

    $exam = $row['exam_number'];

    $total_price = 0 ;

//getting payments balances

//gettingshopping cart details

      $Balance_query = mysqli_query($conn,  "SELECT SUM(amount_paid) AS 'sumitem_cost' FROM payments WHERE payment_by='$user_uid' ");

    

      $balance_data = mysqli_fetch_array($Balance_query);

      $balance_price = $balance_data['sumitem_cost'];

      

      $py = mysqli_query($conn, "SELECT * FROM payments WHERE payment_by='$user_uid' AND status!='rejected' GROUP BY invoice_id");

      while($rowpy = mysqli_fetch_assoc($py)){

          

          $paidAmout = $rowpy['amount'];

          $invoiceId = mysqli_real_escape_string($conn, $rowpy['invoice_id']);

          $PaymentStatus = mysqli_real_escape_string($conn, $rowpy['status']);

          //Getting invoice

          $Invoice = mysqli_query($conn, "SELECT * FROM invoices WHERE id='$invoiceId'");

          

          while($rowInv = mysqli_fetch_assoc($Invoice)){

          $NewFeeId = $rowInv['id'];

          

          $sql = mysqli_query($conn,"SELECT SUM(fee) as total FROM invoices WHERE id='$invoiceId'");

         $row = mysqli_fetch_array($sql);

          $sum = $row['total'];

          $total_price += $row[‘fee’];

          

      }}

      $BalanceToPay =  $total_price - $balance_price;

      // you can keep for your data 

      $grandBalanceForAllStudent += $BalanceToPay ;

     echo'<br>'.$exam.':' . $BalanceToPay ;

      

}

?>


查看完整回答
反對 回復 2023-10-01
  • 3 回答
  • 0 關注
  • 170 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號