Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/12/2013, 12:31
ocp001a
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Tabla Dinamica

La suma es relativamente fácil, si metes los datos en una matriz


$matriz_total[$meses[$row['FECHA_VENTA']-1]][$row['ZONA']]+=$row['COMISION'];//suma el total de zona por mes
$matriz_total[$meses[$row['FECHA_VENTA']-1]][$row['TIPO_OPERACION']]+=$row['COMISION'];//suma el total de tipo oper. por mes

Esto lo puedes hacer antes de dibujar la tabla.

Cuando dibujes la tabla, puedes al final de cada fila buscar los datos de la matriz de totales.


Código PHP:
Ver original
  1. while($row = mysql_fetch_array($result)){
  2.            if(!isset($tipo_ope)){//si no existe la bandera $tipo_ope
  3.                 $tipo_ope==$row['TIPO_OPERACION'];
  4.                 $zona==$row['ZONA'];
  5.            }
  6.     echo "<tr>";
  7.        
  8.            if($row_anteriorzona!=$row["ZONA"]){  
  9.                 echo "<td>".$row['ZONA']."</td>";
  10.                 $row_anteriorzona=$row['ZONA'];
  11.            }else{  
  12.                 echo "<td> </td>";  
  13.                 }
  14.             echo "<td>".$row['TIPO_OPERACION']."</td>";
  15.             echo "<td>".$row['VENDEDOR']."</td>";
  16.             echo "<td>".$meses[$row['FECHA_VENTA']-1]."</td>";
  17.             echo "<td>".$row['COMISION']."</td>";
  18.             if($row['TIPO_OPERACION']!=$tipo_ope){//si cambiamos de un tipo de operación a otro
  19.                 foreach($meses as $mes){//recorremos los meses (puede ser otro arreglo de meses, solo los que queremos)
  20.                       if(isset($matriz_total[$mes][$row['ZONA'][$row['TIPO_OPERACION']])//si la matriz de totales tiene datos para el mes (del bucle) de la zona y el tipo_ope actual
  21.                            echo '<td>'.$matriz_total[$mes][$row['ZONA'][$row['TIPO_OPERACION']].'</td>;  
  22.                      else//si no hay datos escribimos 0 o vacio
  23.                           echo '<td> 0</td>';
  24.                 }
  25.            }
  26.        echo "</tr>";
  27.      }


También se puede dibujar la tabla con las celdas combinadas, pero eso ya requiere operaciones mucho más complejas, yo tengo un desarrollo que hace exactamente eso y maneja recursividad