5

ここの誰かが私がこれを解決するのを手伝ってくれる?特定の列の合計または合計を取得したいだけです。下の画像を参照してください。これを2日間並べ替えようとしましたが、運が悪かったので、誰かがこれを手伝ってくれることを願っています。どうもありがとうございました。よろしくお願いします。

これがサンプル画像です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>
4

2 に答える 2

2

次のようなものでSQLステートメントを変更できます

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

次に、それを印刷します

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

また、関数を置き換えるPDOおよび準備済みステートメントのいずれかを確認することもできmysql_ます。

于 2012-04-25T17:26:03.937 に答える
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";

それが機能するかどうか知りたいです。:)

あなたの「コルスパン」を考慮していないことに注意してください。ロジックを実際のレイアウトに組み込む前に、ロジックを決定する必要があると思います。

于 2012-04-25T19:06:17.303 に答える