Foros del Web » Programando para Internet » PHP »

Agrupar registros con el mismo dia

Estas en el tema de Agrupar registros con el mismo dia en el foro de PHP en Foros del Web. Bueno, basicamente es eso: tengo en una base de datos eventos que tienen, en campos separados (es mas facil para ingresar por formulario), el dia ...
  #1 (permalink)  
Antiguo 09/07/2009, 16:10
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 16 años, 2 meses
Puntos: 1
Agrupar registros con el mismo dia

Bueno, basicamente es eso: tengo en una base de datos eventos que tienen, en campos separados (es mas facil para ingresar por formulario), el dia y el mes en que sucederan (o sucedieron). La idea seria mostrar los eventos por mes, todos juntos. De hecho, eso esta hecho ya.

La cosa es que, por ejemplo, si el 3 de Julio pasan 2 o mas cosas, lo muestra en dos bloques diferentes, y la idea seria mostrarlos los dos juntos (o los que sean), en vez de separados. Digamos, por ejemplo, los dos eventos que aparecen en el 3 de julio, mostrar solo un cuadrado con el numero 3, y ahi, los eventos que pasen en ese fecha. Y no logro hacerlo. Trate de hacer un group by, pero decididamente no era eso lo que necesitaba, je.

Espero su colaboracion, muchas gracias!

Pablo.
  #2 (permalink)  
Antiguo 09/07/2009, 16:17
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 16 años, 3 meses
Puntos: 139
Respuesta: Agrupar registros con el mismo dia

Vamos a ver .

Tienes 2 o mas eventos en un dia
y en vez de mostrartelo en el mismo bloque del dia, te lo muestra en bloques diferentes.

Como se muestra en este link
http://www.jho.edu.ar/calendario/mes.php?id=05

De ser haci tendrias que poner el codigo de como estas recuperando esos bloques
y mas o menos como lo guardas en tu db.
  #3 (permalink)  
Antiguo 09/07/2009, 16:28
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Agrupar registros con el mismo dia

Exactamente. Quisiera, que por ejemplo, los eventos del 4, esten juntos, y que no se repita el bloque del 4.

Ahora, en la base de datos, la estructura es algo asi:

Código:
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `mes` smallint(6) NOT NULL,
 `dia` smallint(6) NOT NULL,
  `evento` text NOT NULL,
  `horario` text NOT NULL,
Esto, como dije en el mensaje anterior, lo hago pues es mas facil a la hora de ingresar en un formulario por medio de selects: en uno elijo el mes, y en otro la fecha, y listo.

Ahora, de esta BD, lo recupero de la siguiente forma:

Código PHP:
$mes_actual $_GET['id'];
$query"SELECT * FROM calendario WHERE mes = '$mes_actual' ORDER BY dia ASC";
$calendario mysql_query($query$conexion) or die(mysql_error());
$row_calendario mysql_fetch_assoc($calendario); 
Luego, en el cuerpo de mi pagina, hago un while de la siguiente forma:

Código PHP:
<? $i=0// variable para alternar los colores de los bloques
if ($numero!=0){
do {
?>
<div class="<? if ($i%2==0){echo "calen";}else{echo "calen_color";}?>"> // si $i es par, una clase CSS, sino otra.
<div class="numero"><img src="../images/calendario/<? echo $row_calendario['dia'];?>.gif"/></div> // aca, segun el dia que tenga el registro, la imagen que mostrare (este es el numero que se muestra en los bloques)
<div class="detalle">
<p class="color"><?echo $row_calendario['horario'];?></p>
<? if ($row_calendario['horario']==""){echo '<br/>';}?> // esto lo hago para que todos los elementos que no tienen un horario, queden alineados verticalmente.
<p><?echo $row_calendario['evento'];?></p> //imprimo el evento
</div>
</div>
<?;$i++; } while ($row_calendario mysql_fetch_assoc($calendario));
}
else { echo 
'No hay fechas disponibles para este mes.<br/><br/><br/>';}?>
Es medio rebuscado? Hasta ahora me ha dado resultado, salvo por el problemita este. La tabla es facil de modificar, y agiliza el calendario.

Bueno, eso es todo. Espero puedan ayudarme! ;)

Gracias,

Pablo.
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 12:09.