2013-02-02 80 views
1

如何從收到的總金額中扣除總費用並將其顯示在總收入中?如何從不同的表中添加2個總數?

的數據來自不同的表從我的數據庫..可惜我不能上傳更清晰的視圖PIC ..

TOTAL AMOUNT RECEIVED || 15610 

TOTAL EXPENSES || 11300 

TOTAL REVENUES || (this must be equal to TOTAL AMOUNT RECEIVED - TOTAL EXPENSES) 

這裏是我的代碼:

<table width="383" border="1" bordercolor="#00CCFF"> 
<tr> 
<td width="245" bgcolor="#0099FF">TOTAL AMOUNT RECIEVED</td> 
<td width="128" bgcolor="#FFFFFF"> 
      <?php 
      include("confstudents.php"); 
      $id = $_GET['id']; 
      $query = "SELECT id, SUM(1stPayment + 2ndPayment + 3rdPayment + 4thPayment) um_payment FROM student_payments"; 
      $result = mysql_query($query) or die(mysql_error()); 
      // Print out result 
      while($row = mysql_fetch_array($result)){ 
      echo "" . $row['sum_payment']; 
      echo "<br/>"; 
      } 
      ?> 
</td> 
</tr> 
<tr> 
<td bgcolor="#0099FF">TOTAL EXPENSES</td> 
<td bgcolor="#FFFFFF"> 
      <?php 
      include("confexpenses.php"); 
      $id = $_GET['id']; 
      $query = 'SELECT SUM(piece * price) tprice FROM expenses'; 
      $result = mysql_query($query) or die(mysql_error()); 
      while($res = mysql_fetch_assoc($result)){ 
      echo " " . $res['tprice']; " "; 
      } 
      ?> 
</td> 
</tr> 


<tr> 
<td bgcolor="#0099FF">TOTAL REVENUES</td> 
<td bgcolor="#FFFFFF"> 
      <?php 
      include("totalrev.php"); 
      ?> 
</td> 
</tr> 
</table> 
+0

在第一循環中,添加'$行[ 'sum_payment']''到$ total_received'。在第二個循環中添加'$ res ['tprice']'到'$ total_expenses'。最後,計算'$ total_revenues = $ total_received - $ total_expenses'。 – Barmar

回答

0

我首先要找出與結構/風格無關的一般答案,但本質上你想存儲第一個兩個查詢的返回值,然後做一些數學計算。讓我們先簡單化(KISS - 保持簡單,愚蠢),並從樣式中抽象出邏輯。

<?php 
$query = " 
SELECT 
    id, 
    SUM(1stPayment + 2ndPayment + 3rdPayment + 4thPayment) AS sum_payment 
FROM 
    student_payments"; 

$result = mysql_query($query) || die(mysql_error()); 

// Create a variable to store the sum of payments 
$sum_payment = 0; 

// Print out result 
while($row = mysql_fetch_array($result)) 
{ 
    echo "" . $row['sum_payment']; 
    echo "<br/>"; 

    $sum_payment += (int)$row['sum_payment']; 
} 

$query = 'SELECT SUM(piece * price) tprice FROM expenses'; 
$result = mysql_query($query) or die(mysql_error()); 

// Variable to store the expenses 
$expenses = 0; 

while($res = mysql_fetch_assoc($result)) 
{ 
    echo " " . $res['tprice']; " "; 
    $expenses += $res['tprice']; 
} 

// Calculate the difference 
$total_rev = $sum_payments - $expenses; 

echo '<br/>', $total_rev, '<br/>'; 
?> 

您所使用的$_GET['id']的注意事項 - 如果您計劃在東西最終將進入一個SQL查詢帶來,你應該逃避它:他們mysql_庫,使用mysql_real_escape_string http://php.net/manual/en/function.mysql-real-escape-string.php但是,在一般情況下,你應該切換到使用MySQLi庫 - http://www.php.net/manual/en/book.mysqli.php - 因爲它更安全,並且PHP最終不會支持標準的mysql函數。

+0

它不起作用,它顯示11300等於11300,並在另一個11300負號後打破。 –

+0

每個while循環後$ sum_payment和$費用的值是多少? – phatskat

0

如果有兩個表之間的關係,例如ID:

SELECT 
SUM(r.stPayment) as RECIEVED, sum(e.piece * e.price) as EXPENSES 
FROM 
student_payments as r, 
expenses as e 
WHERE r.id = e.id and r.id = '$id' 
+0

nope他們不是。 –

+0

其中r.id ='$ id'和r.id ='$ id' – 2013-02-02 11:42:28

+0

它只顯示11300總費用:( –

相關問題