Foros del Web » Programando para Internet » PHP »

PHP OO Tabla Dinamica

Estas en el tema de Tabla Dinamica en el foro de PHP en Foros del Web. B uenas noches amigos de foros del web, tengo un inconveniente generando una tabla paravisualizar unos datos. Debo mostrar las ventas hechas por cada vendedor ...
  #1 (permalink)  
Antiguo 16/12/2013, 05:30
Avatar de YeisonSoto  
Fecha de Ingreso: enero-2011
Ubicación: Cali, Colombia, Colombia
Mensajes: 116
Antigüedad: 13 años, 2 meses
Puntos: 4
Tabla Dinamica

Buenas noches amigos de foros del web, tengo un inconveniente generando una tabla paravisualizar unos datos.

Debo mostrar las ventas hechas por cada vendedor agrupadas por zona, tipo operacion y vendedor




hasta el momento tengo una tabla que agrupa por zona, tipo, vendedor, pero no hepodido totalizar cada registro, ni por zona, ni por tipo, ni he podido calcular el total general

Código PHP:
Ver original
  1. <table border="1" cellspacing=1 cellpadding=2 style="font-size: 8pt">
  2.  
  3.     <tr>
  4.         <th><font face="verdana"><b>Zona</b></font></th>
  5.         <th><font face="verdana"><b>Tipo Op</b></font></th>
  6.         <th><font face="verdana"><b>Vendedor</b></font></th>
  7.         <th><font face="verdana"><b>Mes</b></font></th>
  8.         <th><font face="verdana"><b>Comision</b></font></th>
  9.         <th><font face="verdana"><b>Total</b></font></th>
  10.     </tr>
  11.  
  12.     <?php  
  13.       $meses=array("enero","febrero","marzo","abril", "mayo","junio", "julio", "agosto","septiembre","octubre","noviembre","diciembre");
  14.       $query = "SELECT ZONA, TIPO_OPERACION, VENDEDOR,  date_format(FECHA_VENTA,'%m') FECHA_VENTA , sum(COMISION) AS COMISION
  15.                 FROM  PRUEBA
  16.                 GROUP  BY ZONA,tipo_operacion,vendedor";
  17.      
  18.       $result = mysql_query($query);
  19.       $numero = 0;
  20.      
  21.          $row_anteriorzona='';
  22.          $row_anteriortipoop='';
  23.          $row_anterioroperacion='';
  24.          
  25.       while($row = mysql_fetch_array($result))
  26.       {
  27.     echo "<tr>";
  28.        
  29.            if($row_anteriorzona!=$row["ZONA"]){  
  30.                 echo "<td>".$row['ZONA']."</td>";
  31.                 $row_anteriorzona=$row['ZONA'];
  32.            }else{  
  33.                 echo "<td> </td>"; 
  34.                 }
  35.             echo "<td>".$row['TIPO_OPERACION']."</td>";
  36.             echo "<td>".$row['VENDEDOR']."</td>";
  37.             echo "<td>".$meses[$row['FECHA_VENTA']-1]."</td>";
  38.             echo "<td>".$row['COMISION']."</td>";
  39.             echo "<td> total </td>";   
  40.         echo "</tr>";
  41.       }  
  42.     ?>
  43.    
  44. </table>




aqui un ejemplo mas elaborado hecho con una tabla dinamica excel, me gustaria lllegar a al go como esto.



la verdad no he podido construir esta tabla, se me ha complicado a la hora de poner los meses como columnas y el saldo de cada mes

Mepueden hechar una manita?
  #2 (permalink)  
Antiguo 16/12/2013, 06:22
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Tabla Dinamica

buenas, agrega las columnas necesarias a la tabla y junto con eso el respectivo condicional para que te ponga la comisión en el lugar indicado, con los totales es una simple suma.
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 16/12/2013, 20:31
Avatar de YeisonSoto  
Fecha de Ingreso: enero-2011
Ubicación: Cali, Colombia, Colombia
Mensajes: 116
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Tabla Dinamica

Cita:
Iniciado por carlos_belisario Ver Mensaje
buenas, agrega las columnas necesarias a la tabla y junto con eso el respectivo condicional para que te ponga la comisión en el lugar indicado, con los totales es una simple suma.

Gracias por responder es lo que he tratado de hacer y está un poco complicado.
.

Última edición por YeisonSoto; 16/12/2013 a las 20:59
  #4 (permalink)  
Antiguo 17/12/2013, 12:31
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
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

Etiquetas: dinamica, fecha, mysql, registro, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:18.