2012-04-25 7 views
5

誰でもここでこれを解決できますか?私はちょうど特定の列の合計または合計を取得したい、下の画像を参照してください。これを2日間で整理しようとしていましたが、傾けることはできません。 運がうまくいきません。私はそれほど感謝し、 のおかげで感謝します。ここでアレイの列の合計

その後、

<?php echo $item['sum']; ?> 

でそれを印刷するあなたもしたいかもしれないサンプル画像http://www.freeimagehosting.net/pig81

<?php $sql = "SELECT name, doc_date, descs, debit, credit FROM statement WHERE 
member_id = $member_id ORDER BY doc_date"; 

$query = mysql_query($sql); 
$combinedResults = array(); 

while($result = mysql_fetch_array($query)) { 
$combinedResults[$result[`name`]][] = array(`name` => $result[`name`], `doc_date` => 
$result[`doc_date`], `descs` => $result[`descs`],`debit` => $result[`debit`], `credit` 
=> $result[`credit`]);} 

foreach(array_keys($combinedResults) as $groupKey) { ?> 
<table> 
    <tr><?php foreach($combinedResults[$groupKey] as $item) {?> 
    <td>Date</td> 
    <td>Description</td> 
    <td>Debit</td> 
    <td>Credit</td> 
    <td>Balance</td> 
    </tr> 
<tr> 
<td colspan="2"><?php echo $groupKey; ?></td> 
<td width="105">&nbsp;</td> 
<td width="105">&nbsp;</td> 
<td width="105">&nbsp;</td> 
</tr> 
<tr><?php foreach($combinedResults[$groupKey] as $item) {?> 
<td><?php echo $item[`doc_date`];?></td> 
<td><?php echo $item[`descs`];?></td> 
<td><?php echo $item[`debit`];?></td> 
<td><?php echo $item[`credit`]; ?></td> 
<td>&nbsp;</td> 
</tr> 
<tr> 
<td>&nbsp;</td> 
<td>&nbsp;</td> 
<td>&nbsp;</td> 
<td>&nbsp;</td> 
<td>sum of debit goes here</td> 
</tr> 
<?php }} ?> 
</table> 

答えて

1

私はコードに基づいてコードをリファクタリングし、残高計算機を追加しましたが、実際にはテストしていません。

<?php 

$sql = "SELECT name, doc_date, descs, debit, credit 
     FROM statement 
     WHERE member_id = $member_id 
     ORDER BY doc_date"; 

$query = mysql_query($sql); 
$combinedResults = array(); 

// Slurp SQL results into array 
while ($result = mysql_fetch_array($query)) { 
    $combinedResults[$result['name']][] = array(
    'name' => $result['name'], 
    'doc_date' => $result['doc_date'], 
    'descs' => $result['descs'],'debit' => $result['debit'], 
    'credit' => $result['credit'] 
); 
} 

// Define a format for all table lines (add CSS as required) 
$fmt = "<tr>\n <td>%s</td>\n <td>%s</td>\n <td>%s</td>\n <td>%s</td>\n <td>%s</td>\n</tr>"; 

print "<style type='text/css'>TD{width:105px;}</style>\n"; 

print "<table>\n"; 

// Walk through array... 
foreach ($combinedResults[$groupKey] as $item) { 
    // Start a section... 
    printf($fmt, "Date", "Description", "Debit", "Credit", "Balance"); 
    printf($fmt, $groupKey, "", "", "", ""); 
    $balance = 0; // Initialize the balance for this section... 
    foreach ($combinedResults[$groupKey] as $item) { 
    printf($fmt, $item['doc_date'], $item['descs'], $item['debit'], $item['credit'], ""); 
    $balance += $item['debit']; 
    } 
    printf($fmt, "", "", "", "", $balance); // Print the balance. 
} 

print "</table>\n"; 

私はそれが動作するかどうか知りたいです。 :)

私はあなたの "colspan"のための余裕をしなかったことに注意してください。私はあなたが実際のレイアウトにそれを構築しようとする前に、あなたの論理を決めるべきだと思う。

+0

こんにちはghoti、返信いただきありがとうございます。私はそれが働いていると思うが、アイテムの数に応じて複数の結果を表示または表示するため、ちょっとした調整が必要です。ここにサンプル出力があります。http://www.freeimagehosting.net/xx7bc –

+0

こんにちは。今すぐご利用ください、お時間をいただきありがとうございます。とても感謝しています。 –

+0

問題ありません。 upvoteありがとう。 – ghoti

2

あなたは

SELECT name, doc_date, descs, debit, credit, SUM(debit) AS sum FROM statement WHERE member_id = $member_id ORDER BY doc_date 

のようなものを使用してSQLステートメントを変更することができますですPDOとのいずれかを見てください210は、mysql_機能を置き換えます。

+0

hi J-Pの場合、クエリ結果は1つの項目しか返しません。何か案が? –