Programación php
Email: Password:


¡Regístrate gratis! | ¿Has perdido tu password?

Home
Blog

En él que podrás informarte de todas las noticias relacionadas con el posicionamiento de páginas web.

Ir al Blog de posicionamiento web



Foro de programación en PHP

Responder el mensaje

Agrupar

Autor: Pablo
Publicado: 22-7-2009 11:23 AM
Hola a todos, tengo una consulta, si alguien puede darme una mano lo voy a agradecer.
Estoy haciendo una pequeña aplicacion, para que en la empresa donde trabajo, puedan cargar las recorridas de los fletes.
Tengo una tabla en mysql:

Remito(numero) Fecha Flete etc

actualmente la muestro así

<?php
include("conexion.php");
$consulta= "select remito, cliente, fecha, flete, loza, bulto, tiras, observaciones from remitos ORDER BY remito";
$resultado= mysql_query($consulta);
while($fila= mysql_fetch_array($resultado)){
?>
<td><?php echo($fila[remito]); ?></td>
<td><?php echo($fila[fecha]); ?></td>

Lo cual me da una línea para cada remito con la fecha al lado.
Remito Fecha
45698 22/06/2009
65445 22/06/2009
56465 23/06/2009

Alguien sabría decirme u orientarme como hacer para que me lo muestre de la siguiente manera:
Fecha: 22/06/2009
Remito
45698
65445
Fecha: 23/06/2009
56465

Muchas gracias.

Pablo


Autor: Boris
Publicado: 27-7-2009 07:47 PM
Has que los mismos echo vayan creando la tabla con los datos:

Ejemplo

<?php
include("conexion.php");
$consulta= "select remito, cliente, fecha, flete, loza, bulto, tiras, observaciones from remitos ORDER BY remito";
$resultado= mysql_query($consulta);
while($fila = mysql_fetch_array($resultado)){
echo "<table><tr><td>Cliente:</td><td>$fila[cliente]</td></tr>";
....
?>

Así vas creando la tabla hasta terminarla con todos los datos.
Autor: Ko-Barde
Publicado: 13-9-2009 06:22 AM
Lo primero es decirte que soy novato en PHP, por lo que puede haber errores de sintaxis en los ejemplos.

Te propongo 2 soluciones, una mediante 2 consultas y otra via PHP para que, como dice Boris, se vaya creando la tabla sola (el ejemplo es sólo para remito y fecha pero puedes emplear el mismo método para agrupar por mas campos)

<?php
include("conexion.php");
$consulta1= "SELECT Remitos.Fecha FROM Remitos GROUP BY Remitos.Fecha ORDER BY Remitos.Fecha"; //Obtengo las fechas que agrupan a los remitos
$resultado1= mysql_query($consulta1);
while($fila1= mysql_fetch_array($resultado1)){
?>
<td><?php echo($fila1); ?></td>

<?php
$consulta2= "SELECT Remitos.Remito FROM Remitos
WHERE (Remitos.Fecha=Cuando) ORDER BY Remitos.Remito"; //Obtengo los remitos de cada fecha
$resultado2= mysql_query($consulta2);
while($fila2= mysql_fetch_array($resultado2)){
?>
<td><?php echo($fila2); ?></td>

Otra posibilidad es dejar el agrupamiento al programa PHP comparando las fechas de cada ciclo en vez de pasarle la tarea al motor de la base de datos

<?php
include("conexion.php");
$consulta= "select remito, fecha from remitos ORDER BY fecha, remito";
$resultado= mysql_query($consulta);
$fechaAnterior=""; //Podría asignarse la primera fecha de $resultado y ahorrarnos el primer if
while($fila= mysql_fetch_array($resultado)){
$imprimeFecha=true;
if ($fechaAnterior="") { //La inicializamos con la primera fecha y la presentamos al navegador
$fechaAnterior=$fila[fecha];
}else{
if ($fechaAnterior=$fila[fecha]) $imprimeFecha=false; //Si la fecha no cambia no hace falta presentarla al navegador
}//end if fechaanterior
if ($imprimeFecha) echo("<td>$fila[fecha]</td>");
echo("<td>$fila[remito]</td>"); //Podría mejorarse la presentación mediante html
?>