Foros del Web » Programando para Internet » PHP »

Agrupar Fechas por grupos

Estas en el tema de Agrupar Fechas por grupos en el foro de PHP en Foros del Web. Tengo una consulta a la BD y quisiera agrupar mis productos por grupos de esta manera: Hoy Ayer Días anteriores Semanas anteriores Todos los productos ...
  #1 (permalink)  
Antiguo 25/04/2011, 19:49
 
Fecha de Ingreso: junio-2010
Mensajes: 54
Antigüedad: 14 años, 5 meses
Puntos: 1
Información Agrupar Fechas por grupos

Tengo una consulta a la BD y quisiera agrupar mis productos por grupos de esta manera:

Hoy
Ayer
Días anteriores
Semanas anteriores

Todos los productos tienen fecha en que fueron guardados (fecha unix)...

Gracias por responder...
  #2 (permalink)  
Antiguo 25/04/2011, 20:01
Avatar de oscargalileo  
Fecha de Ingreso: abril-2011
Mensajes: 8
Antigüedad: 13 años, 6 meses
Puntos: 3
Respuesta: Agrupar Fechas por grupos

Hola, estás en el foro de PHP, necesitaríamos saber al menos qué base de datos estás usando, creo que así no te diría algo mal, saludos!
  #3 (permalink)  
Antiguo 25/04/2011, 20:15
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Agrupar Fechas por grupos

Trata algo así, lee y trata de interpretar lo que hice para que lo puedas lograr.
Código PHP:
Ver original
  1. <?php
  2. $n = 1;
  3. $array = array();
  4. for($i=0; $i<100; $i++){
  5.     $rand = mt_rand(-30,0);
  6.     $day = date('Y-m-d', strtotime($rand . ' days'));
  7.     $array[] = array('id'=>$n++, 'title'=>'Titulo del ' . $day, 'date'=>$day);
  8. }
  9. echo '<pre>';
  10. print_r($array);
  11. echo '</pre>';
  12.  
  13. $group = array(
  14.     'today'=>array(),
  15.     'yesterday'=>array(),
  16.     'daysBeforeYesterday'=>array(),
  17.     'weeks'=>array(),
  18. );
  19. foreach($array as $v){
  20.     if($v['date'] == date('Y-m-d')){
  21.         $group['today'][] = $v['title'];
  22.     }
  23.     elseif($v['date'] == date('Y-m-d', strtotime('-1 day'))){
  24.         $group['yesterday'][] = $v['title'];
  25.     }
  26.     elseif(strtotime($v['date']) < strtotime('-1 day') && strtotime($v['date']) > strtotime('-7 days')){
  27.         $group['daysBeforeYesterday'][] = $v['title'];
  28.     }
  29.     else{
  30.         $group['weeks'][] = $v['title'];
  31.     }
  32. }
  33. echo '<pre>';
  34. print_r($group);
  35. echo '</pre>';
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 25/04/2011, 20:19
Avatar de oscargalileo  
Fecha de Ingreso: abril-2011
Mensajes: 8
Antigüedad: 13 años, 6 meses
Puntos: 3
Respuesta: Agrupar Fechas por grupos

De entrada te recomiendo usar 4 consultas, así será más fácil y ya con PHP lo colocas donde va, si es MySQL recomiendo éstas para cada caso que mencionas:
SELECT * FROM ejemplo.tabla where timestampdiff(day,fecha,now())=0;
SELECT * FROM ejemplo.tabla where timestampdiff(day,fecha,now())=1;
SELECT * FROM ejemplo.tabla where timestampdiff(day,fecha,now()) between 2 and 7;
SELECT * FROM ejemplo.tabla where timestampdiff(day,fecha,now())>7;

Para los días anteriores supuse que querías sólo aquellos de la semana pasada, si es otra la base de datos sólo buscar la alternativa a la función usada y listo.

Ojalá te haya ayudado, saludos y mucha suerte!
  #5 (permalink)  
Antiguo 25/04/2011, 22:04
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Agrupar Fechas por grupos

@oscargalileo, en una sola consulta se puede mostrar todo, mi intension con el código es mostrar como por ejemplo llega una consulta tipo array y como manejarse para agrupar. Todo como si fuera una consulta. Como no sé cual es la base de datos, preferí mostrarlo como si fuera el resultado de la base de datos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 25/04/2011, 22:50
Avatar de oscargalileo  
Fecha de Ingreso: abril-2011
Mensajes: 8
Antigüedad: 13 años, 6 meses
Puntos: 3
Respuesta: Agrupar Fechas por grupos

Hola, sé bien que se puede hacer con una consulta y mi contribución fue sólo una recomendación, saludos!

Etiquetas: agrupar, bd, fechas, grupos
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:02.