Ver Mensaje Individual
  #6 (permalink)  
Antiguo 13/10/2015, 17:06
Drowna
 
Fecha de Ingreso: junio-2014
Mensajes: 14
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Mostrar resultados de consulta

no se si funcione pero es lo que a mi se me acaba de ocurrir. Que tal si agrupas tras la consulta cada producto en un array diferente? Lo más seguro es que la cantidad de productos distintos sea diferente tambien asi que podría intentar algo asi,...

Código PHP:
Ver original
  1. // creamos el array que contendra todos los productos ordenados
  2. $productos = array();
  3. // se realiza la bsuqueda en la base de datos
  4. $datos = mysqli_fetch_array($resultado);
  5. // Se realiza un bucle for que recorra cada linea del array
  6. for($i= 0; $i<count($datos); $i++){
  7.          // Confirmamos que en el array si existe un indice con el nombre del producto.
  8.          if(array_key_exists($datos[$i]["producto"], $producto){
  9.            // Si el indice existe se añade directamente a lo ultimo del array de dicho indice.
  10.            // Doy por sentado que quiere ver directamente la diferencia asi que accedes directamente a este valor]
  11.            array_push($productos[$datos[$i]["producto"]], $datos[$i]["diferencia"] );
  12.          } else {
  13.             // En caso de que no exista se crea el array
  14.           $productos[$datos["producto"]] = array();
  15.             // Y luego insertamos la información que se quiere guardar.
  16.           array_push($productos[$datos[$i]["producto"]], $datos[$i]["diferencia"] );
  17.           }
  18.      
  19. };

Si no me equivico, no lo he probado ya que lo estoy haciendo a cabeza. Deberia darte un array multidimensional con tantos indices como productos haya y tantos ingresos en cada uno como en la tabla haya.

Ahora para ordenarlo todo en una tabla podrías hacer lo siguiente

Código PHP:
Ver original
  1. // Primero averiguamos la cantidades de indices que tiene el array que se hizo antes.
  2. $prod_colum = count($productos);
  3. // Ahora empezamos a crear la tabla, empezamos por la cabecera. Usare de plantilla el que distes en la ultima imagen
  4. $tabla = "<table><tr><td>HOTEL X</td><td>".$_POST['cliente']."</td><td>".$_POST['mes']."</td><td colspan='".$prod_colum-2."'></td></tr>";
  5. $tabla .="<tr><td>Fecha</td>";
  6. foreach($productos as $key => $value){
  7.       $tabla .= "<td>".$key."</td>";
  8. };
  9. $tabla .= "</tr>";
  10. // A partir de aqui se crea el contenido de la tabla
  11. for($dia = 0; $dia<30; $dia++){
  12.       // La primera celda será la del dia
  13.      $table .= "<tr><td>".$dia+1."</td>";
  14.      // Se recorre cada dia concreto de cada uno de los productos
  15.      for($pro = 0; $pro<$prod_colum; $pro++){
  16.            // Se comprueba si el dia existe dentro del array
  17.            if($productos[$pro][$dia] == null || $productos[$pro][$dia] == undefined || $productos[$pro][$dia] == false){
  18.                  // En caso de no existir el valor del dia es 0
  19.                  $table .= "<td>0</td>";
  20.            } else {
  21.                  // En caso de existir se introduce el valor concreto
  22.                  $table .= "<td>".$productos[$pro][$dia]."</td>";
  23.            }
  24.      }
  25.     // Se cierra la fila de este dia para que inicie la fila del siguiente
  26.    $tabla .= "</tr>";
  27. };
  28. //Calculamos el total de cada producto
  29. $total = array();
  30. $tabla .= "<tr><td>Total</td>";
  31. for($pro = 0; $pro<$prod_colum; $pro++){
  32.      $total[$pro] = array();
  33.      while($cantidad = $producto[$pro]["diferencia"]){
  34.                  $total[$pro] += $cantidad]
  35.      };
  36.      $Table .="<td>".$total[$pro]."</td>";
  37. }
  38.  
  39. // Se finaliza todo se cierra la tabla
  40. $tabla .="</tr></table>";

A mi parecer creo que deberia funcionar. DE todas formas no te confies mucho en esto. Lo acabo de hacer de cabeza y no lo he testeado tan siquiere. Es más que probable, por no decir seguro, de que alguien lo haga más simple y mejor que yo. Espero que te sea de ayuda