2016-05-23 18 views
0

私は以下のようにmysqlからデータを引き出す関数を持っています。PHPを使ってレコードセットの列に負の数値と正の数値を加算する

function displayTrialBalance(){ 

require_once('Connections/mpcs_dbConn.php'); 

mysql_select_db($database_dbConn, $dbConn); 

// declare query variables 
$query_diff_empty = "SELECT Account_Code, sum(Amount) AS difference FROM journal2 GROUP BY Account_Code ORDER BY difference asc, Account_Code asc"; 


// check if user wants empty 


// query DB 
$amounts = mysql_query($query_diff_empty, $dbConn) or die(mysql_error()); 
$row_amounts = mysql_fetch_array($amounts); 
$totalRows_users = mysql_num_rows($amounts); 

if ($row_amounts){ 

function debit($arr){ 
return ($arr < 0); 
} 

function credit($arr){ 
return ($arr >= 0); 
} 


echo '<table align="center" border="0" bordercolor="#666666" cellpadding="5" cellspacing="3"> 
     <tr class="tableTop"> 
     <td>Account Code</td> 
     <td>Debit</td> 
     <td>Credit</td>'; 

do { 

$diff = array($row_amounts['difference']); 

     echo ' 
     </tr> 
     <tr class="tableButtom"> 
     <td>'.$row_amounts['Account_Code'].'</td> 
     <td>'; 
     foreach((array_filter($diff, "debit")) as $new){ 
     echo abs($new).'.00';} 
     echo '</td> 
     <td>'; 
     foreach((array_filter($diff, "credit")) as $new2){ 
     echo $new2; 
     } 
     echo '</td>'; 


}while ($row_amounts = mysql_fetch_array($amounts)); 
echo '</tr> 
</table>'; 
} 
} 

私はdisplayTrialBalance()を呼び出すときに私が得る:

Account Code Debit  Credit 
13101   350000.00 
22601   3000.00 
22201      0.00 
41101      3000.00 
21201      40000.00 

にはどうすればエンド出力テーブルに合計を取得するために負(デビット列)と正(クレジット列)番号を合計することができます?

また、それは私の予想出力があるべきように昇順に勘定コード列をソートすることが可能である:

Account Code Debit  Credit 
13101   350000.00 
22601   3000.00 
21201      40000.00 
22201      0.00 
41101      3000.00 
----------------------------------- 
Total   353000.00 43000.00 
+0

あなたは 'PHP'または' MySql'で望みの結果を得たいですか? – Blank

+0

@Reno私はPHPでそれを取得したい。私はすでにレコードセットを持っていますが、合計を得るために別のクエリを作成することをお勧めしますか? –

+0

@Reno私は単純に値<0を取得するために私のSQLクエリでHAVING句を使用することができます実現。次にarray_sum()を行います。しかし、私はPHPソリューションをお勧めかもしれないと思いますか?また、私はどのように注文を処理するのですか? –

答えて

0

私は、最終的にはそれを考え出した私が行うために必要なすべてがループに配列したと収集別の変数の増分。その後、私のテーブルの変数を合計としてエコーします。

function displayTrialBalance(){ 

require_once('Connections/mpcs_dbConn.php'); 

mysql_select_db($database_dbConn, $dbConn); 

// declare query variables 
$query_diff_empty = "SELECT Account_Code, sum(Amount) AS difference FROM journal2 GROUP BY Account_Code ORDER BY difference asc, Account_Code asc"; 


// check if user wants empty 


// query DB 
$amounts = mysql_query($query_diff_empty, $dbConn) or die(mysql_error()); 
$row_amounts = mysql_fetch_array($amounts); 
$totalRows_users = mysql_num_rows($amounts); 

if ($row_amounts){ 

function debit($arr){ 
return ($arr < 0); 
} 

function credit($arr){ 
return ($arr >= 0); 
} 


echo '<table align="center" border="0" bordercolor="#666666" cellpadding="5" cellspacing="3"> 
     <tr class="tableTop"> 
     <td>Account Code</td> 
     <td>Debit</td> 
     <td>Credit</td>'; 

// get total debit 
foreach((array_filter($diff, "debit")) as $x){ 
$totalDebit += $x; 
} 
// get total credit 
foreach((array_filter($diff, "credit")) as $y){ 
$totalCredit += $y; 
} 

do { 

$diff = array($row_amounts['difference']); 

     echo ' 
     </tr> 
     <tr class="tableButtom"> 
     <td>'.$row_amounts['Account_Code'].'</td> 
     <td>'; 
     foreach((array_filter($diff, "debit")) as $new){ 
     echo abs($new).'.00';} 
     echo '</td> 
     <td>'; 
     foreach((array_filter($diff, "credit")) as $new2){ 
     echo $new2; 
     } 
     echo '</td>'; 


}while ($row_amounts = mysql_fetch_array($amounts)); 
echo '</tr> 
     <tr class="tableButtom"> 
     <td>'; 
     echo 'Total'; 
     echo '</td> 
     <td>'; 
     echo abs($totalDebit).'00'; 
     echo '</td> 
     <td>'; 
     echo $totalCredit.'00'; 
     echo '</td> 
     </tr> 
</table>'; 
} 
} 
関連する問題