No veo que hayas si quiera tratado de intentar poner en practica lo que te comente, debes de asignar en tu array de subtotales en cada vuelta de tu array, y
solamente resetear el valor al cambiar de grupo (a la hora de imprimir los subtotales).
Tal como lo tienes ahorita, solo se suma cuando se imprimen los subtotales, pero solo se suma el total del grupo actual, porque solamente entra una vez en el condicional, ve esto (PSEUDOCODIGO):
Código:
do {
if( new_group() {
print_headers_grupo()
}
print_data($row)
if( new_group() ) {
$subtotal = array();
$subtotal[] = $row['total'];
print_subtotal( array_sum( $subtotal ) );
}
$totales[] = $row['total'];
} while ( $row = fetch_row() );
print_totales($totales);
Lo que te comento es que tienes que mover la asignación en cada vuelta:
Código:
do {
if( new_group() {
print_headers_grupo()
}
print_data($row)
if( new_group() ) {
print_subtotal( array_sum( $subtotal ) );
$subtotal = array();
}
$subtotal[] = $row['total'];
$totales[] = $row['total'];
} while ( $row = fetch_row() );
print_totales($totales);
Saludos.