2012-04-25 30 views
5

¿Alguien aquí puede ayudarme a resolver esto? Solo quiero obtener el total o la suma de cierta columna, consulte la imagen a continuación. He intentado ordenar esto por 2 días pero no puedo no tener suerte, espero que alguien me pueda ayudar con esto. Lo agradezco mucho, y gracias en por adelantado.sum of array column

Aquí está una imagen de muestra 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> 

Respuesta

1

He modificado el código según lo que veo en él, y agregué una calculadora de saldo, pero en realidad no lo he probado.

<?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"; 

Me gustaría saber si funciona. :)

Tenga en cuenta que no hice concesiones para su "colspan"; Sospecho que debes conformarte con tu lógica antes de intentar construirla en un diseño real.

+0

Hola ghoti, gracias por la respuesta. Creo que está funcionando, pero solo necesita un pequeño ajuste porque gira o muestra resultados múltiples según la cantidad de elementos. aquí está el resultado de la muestra http://www.freeimagehosting.net/xx7bc –

+0

hola ghoti, soy yo otra vez. ESTÁ TRABAJANDO AHORA, muchas gracias por su tiempo y ayuda. Aprecio mucho. –

+0

No hay problema. Gracias por el voto popular. – ghoti

2

Puede cambiar la instrucción SQL con algo como

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

A continuación, imprima con

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

También puede ser que desee echar un vistazo a PDO y prepared statements que reemplazan las funciones mysql_.

+0

hola J-P, los resultados de la consulta devuelven solo 1 artículo. ¿alguna idea? –