Foros del Web » Programando para Internet » PHP »

Mostrar resultados de consulta

Estas en el tema de Mostrar resultados de consulta en el foro de PHP en Foros del Web. Buen dia a todos Tengo una bd con los siguientes campos id fecha producto ingreso egreso cliente 01 4-4-2015 toallas 100 100 andes 02 4-4-2015 ...
  #1 (permalink)  
Antiguo 07/10/2015, 07:10
 
Fecha de Ingreso: octubre-2015
Ubicación: Argentina
Mensajes: 4
Antigüedad: 8 años, 6 meses
Puntos: 0
Mostrar resultados de consulta

Buen dia a todos

Tengo una bd con los siguientes campos

id fecha producto ingreso egreso cliente

01 4-4-2015 toallas 100 100 andes
02 4-4-2015 manteles 50 50 andes

Cuando realizo la consulta para saber de un determinado cliente los productos y cantidades que ingresaron y egresaron en un mes determinado.
Se muestra tal cual como esta arriba, pero el cliente me solicita que se muestre de otra manera, como la siguiente.



fecha toallas manteles
4-4-2015 100 50
4-4-2015 etc. etc
5-4-2015 etc. etc.

Hay alguna forma de hacerlo o algun ejemplo donde pueda observar de que manera realizarlo ?
Desde ya les agradezco su ayuda.
  #2 (permalink)  
Antiguo 13/10/2015, 09:52
 
Fecha de Ingreso: octubre-2015
Ubicación: Argentina
Mensajes: 4
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: Mostrar resultados de consulta

Perdon que los vuelva a molestar poniendo este mensaje, pero antes que quede en el olvido quisiera ver si alguien pudiera orientarme o plantearme un camino para dar con la solucion de esta manera de mostrar los datos de una consulta.

Desde ya muchas gracias
  #3 (permalink)  
Antiguo 13/10/2015, 12:15
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Mostrar resultados de consulta

Hola guspel,

Sería de gran ayuda que postearas el código que tienes hasta ahora para poder ayudarte sobre él...
  #4 (permalink)  
Antiguo 13/10/2015, 14:22
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Mostrar resultados de consulta

Formateas tus datos a través de una tabla agregando una fila por cada registro y en cada celda colocando los valores correspondientes.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #5 (permalink)  
Antiguo 13/10/2015, 15:11
 
Fecha de Ingreso: octubre-2015
Ubicación: Argentina
Mensajes: 4
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: Mostrar resultados de consulta

Ante todo gracias por sus respuestas.

Este es el codigo que tengo.
Código:
<?php 
  /*Conexion a la bd*/
include ("conexion.php");

if(isset($_REQUEST['enviar'])){
	$query="select day(fecha), month(fecha), year(fecha), producto, cliente, reparto, sum(ingreso), sum(egreso), sum(ingreso)-sum(egreso) from planta_prod WHERE month(fecha)='$_POST[mes]' and year(fecha)='$_POST[ano]' and cliente='$_POST[cliente]' group by day(fecha),cliente, producto";
	$resultado=mysql_query($query);
	$total=mysql_num_rows($resultado);?>
    <input type="button" value="Imprimir" onclick="javascript:imprSelec('imprimir');function imprSelec(imprimir)
{var ficha=document.getElementById(imprimir);var ventimp=window.open(' ','popimpr');ventimp.document.write(ficha.innerHTML);ventimp.document.close();ventimp.print();ventimp.close();};" />
    <div id="imprimir">
    <h3 style="color:#0080FF">Cliente  <?php echo $_POST['cliente'] ?></h3>
    <h3 style="color:#0080FF">Mes  <?php echo $_POST['mes'] ?></h3>
    <hr>
    <br>
	<?php
	
		echo "<table border='0' width='95%' id='Exportar_a_Excel'><tr bgcolor='#C0BCBC'><td>Dia</td><td>Producto</td><td>Ingreso</td><td>Egreso</td><td>Diferencia</td></tr>";
	
	while($dato=mysql_fetch_array($resultado)){
		echo "<tr>";
		echo "<td>".$dato['day(fecha)']."<hr></td>";
		echo "<td>".$dato['producto']."<hr></td>";	
		echo "<td>".$dato['sum(ingreso)']."<hr></td>";
		echo "<td>".$dato['sum(egreso)']."<hr></td>";
		echo "<td>".$dato['sum(ingreso)-sum(egreso)']."<hr></td>";
		echo "</tr>";
		}		
		echo "</table>";
		echo "Total de registros: $total";
		echo "<br><br><form action='cli-ficheroxls-cli.php' method='post' target='_blank' id='FormularioExportacion'>
<p>Exportar a Excel  <img src='excel.png' width='30px' class='botonExcel' /></p>
<input type='hidden' id='datos_a_enviar' name='datos_a_enviar' />
</form>";
	}

 ?>
El cual me arroja este resultado en pantalla.


Pero esta persona me pide que se visualice de esta manera.


Cosa que no logro encontrarle la vuelta, ya que los nombres de los productos ( toallas, manteles,etc) varian de acuerdo a cada cliente.

Gracias por su tiempo
  #6 (permalink)  
Antiguo 13/10/2015, 17:06
 
Fecha de Ingreso: junio-2014
Mensajes: 14
Antigüedad: 9 años, 9 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
  #7 (permalink)  
Antiguo 14/10/2015, 07:46
 
Fecha de Ingreso: octubre-2015
Ubicación: Argentina
Mensajes: 4
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: Mostrar resultados de consulta

Gracias Drowna por tu tiempo.
Mirá, lo implemente de esta manera (espero sea la correcta). Me aparecieron algunos errores de sintaxis, los cuales arregle. Pero al ejecutarlo me marca el siguiente error.

Cita:
<?php
/*Conexion a la bd*/
include ("conexion.php");

if(isset($_REQUEST['enviar'])){

$query=("select day(fecha), month(fecha), year(fecha), producto, cliente, reparto, sum(ingreso), sum(egreso), sum(ingreso)-sum(egreso) from planta_prod WHERE month(fecha)='$_POST[mes]' and year(fecha)='$_POST[ano]' and cliente='$_POST[cliente]' group by day(fecha),cliente, producto")or die(mysql_error());
$resultado=mysql_query($query);
$total=mysql_num_rows($resultado);?>
<?php
////////////////////////////
// creamos el array que contendra todos los productos ordenados
$productos = array();
// se realiza la bsuqueda en la base de datos
$datos = mysqli_fetch_array($resultado);
// Se realiza un bucle for que recorra cada linea del array
for($i= 0; $i<count($datos); $i++){
// Confirmamos que en el array si existe un indice con el nombre del producto.
if(array_key_exists($datos[$i]["producto"], $productos)){
// Si el indice existe se añade directamente a lo ultimo del array de dicho indice.
// Doy por sentado que quiere ver directamente la diferencia asi que accedes directamente a este valor
array_push($productos[$datos[$i]["producto"]], $datos[$i]["diferencia"] );
} else {
// En caso de que no exista se crea el array
$productos[$datos["producto"]] = array();
// Y luego insertamos la información que se quiere guardar.
array_push($productos[$datos[$i]["producto"]], $datos[$i]["diferencia"] );
}

};
// Primero averiguamos la cantidades de indices que tiene el array que se hizo antes.
$prod_colum = count($productos);
// Ahora empezamos a crear la tabla, empezamos por la cabecera. Usare de plantilla el que distes en la ultima imagen
$tabla = "<table><tr><td>HOTEL X</td><td>".$_POST['cliente']."</td><td>".$_POST['mes']."</td><td colspan='2'>".$prod_colum."></td></tr>";
$tabla .="<tr><td>Fecha</td>";
foreach($productos as $key => $value){
$tabla .= "<td>".$key."</td>";
};
$tabla .= "</tr>";
// A partir de aqui se crea el contenido de la tabla
for($dia = 0; $dia<30; $dia++){
// La primera celda será la del dia
$tabla .= "<tr><td>".$dia+'1'."</td>";
// Se recorre cada dia concreto de cada uno de los productos
for($pro = 0; $pro<$prod_colum; $pro++){
// Se comprueba si el dia existe dentro del array
if($productos[$pro][$dia] == null || $productos[$pro][$dia] == undefined || $productos[$pro][$dia] == false){
// En caso de no existir el valor del dia es 0
$table .= "<td>0</td>";
} else {
// En caso de existir se introduce el valor concreto
$table .= "<td>".$productos[$pro][$dia]."</td>";
}
}
// Se cierra la fila de este dia para que inicie la fila del siguiente
$tabla .= "</tr>";
};
//Calculamos el total de cada producto
$total = array();
$tabla .= "<tr><td>Total</td>";
for($pro = 0; $pro<$prod_colum; $pro++){
$total[$pro] = array();
while($cantidad = $producto[$pro]["diferencia"]){
$total[$pro =+ $cantidad];
}
$Table .="<td>".$total[$pro]."</td>";
}

// Se finaliza todo se cierra la tabla
$tabla .="</tr></table>";
}
?>
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, resource given in C:\wamp\www\PHP_planta_30\admin\cli-diario-cli-00.php on line 91

que corresponde a esta linea del codigo
Cita:
// se realiza la bsuqueda en la base de datos
$datos = mysqli_fetch_array($resultado);
A la vez me surge duda sobre esta parte del codigo ( si esta bien modificado por mi ) ya que sin las comillas simples me indica error.
Cita:
// La primera celda será la del dia
$tabla .= "<tr><td>".$dia+'1'."</td>";
No estoy seguro de haber corregido bien esos errores de sintaxis o haberlo implementado bien ¿ Serias tan gentil de echarle una mirada y ver si encuentras algo mal ?

Mil gracias
  #8 (permalink)  
Antiguo 14/10/2015, 09:06
 
Fecha de Ingreso: junio-2014
Mensajes: 14
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Mostrar resultados de consulta

Creo si no me fije mal, es que no esta recibiendo un valor dicha consulta. Y segun veo tu consulta noe estaria mal hecha?. Deberia ser algo asi.
Código PHP:
Ver original
  1. // No se como es tu php de conexion pero yo lo dejo como lo suelo usar.
  2. // Hago conexion a base de datos
  3. $db = mysqli_connect("host", "user", "pass", "database") or die();
  4. // Preparo la consulta;
  5. $consulta ="select day(fecha), month(fecha), year(fecha), producto, cliente, reparto, sum(ingreso), sum(egreso), sum(ingreso)-sum(egreso) from planta_prod WHERE month(fecha)='$_POST[mes]' and year(fecha)='$_POST[ano]' and cliente='$_POST[cliente]' group by day(fecha),cliente, producto";
  6. // Ejecuto y guardo la consulta en la variable resultado;
  7. $resultado = mysqli_query($db, $consulta);
  8. // Esta variable no se para que la quieres pero la mantengo.
  9. $total = mysqli_num_rows($resultado);

Asi a mi parecer debe funcionar. Sobre lo ultimo que dijistes la verdad no le veo el porque el error. Es sumar 1 al numero del loop. La cosa será comprobar como se ve cuando se quiten los errores

Etiquetas: fecha, resultados
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 05:20.