Foros del Web » Programando para Internet » PHP »

como haria para mostrar los 12 ultimos meses del año

Estas en el tema de como haria para mostrar los 12 ultimos meses del año en el foro de PHP en Foros del Web. buenas. necesito de su ayuda para resolver un tema de fechas. resulta que estoy mostrando una galeria de imagenes con sus respectivas fechas. cada fecha ...
  #1 (permalink)  
Antiguo 10/12/2010, 14:15
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
como haria para mostrar los 12 ultimos meses del año

buenas. necesito de su ayuda para resolver un tema de fechas. resulta que estoy mostrando una galeria de imagenes con sus respectivas fechas. cada fecha esta agrupada por meses y dentro de esos meses yo muestro los dias de la semana contanto cuantos eventos hay en cada semana.

por ejemplo si el mes de diciembre hay eventos de los dias lunes, martes y miercoles, me debe mostrar el ultimo evento ingresado.

registre 3 eventos los dias 03, 04 y 06 de enero del 2011. he cambiado la fecha del sistema y me deberia mostrar los eventos que agregue y tambien el ultimo evento que en este caso seria el dia 06 de enero del 2011. pero solo me muestra el ultimo evento del dia miercoles 08 de diciembre del 2010 (el año anterior).

este es el codigo que desarrolle.

Código PHP:
Ver original
  1. #consulto la fecha en orden descendente.
  2. $sql_fechas  = "SELECT fecha_evento FROM sense_galeria ORDER BY idgaleria DESC";
  3. $rpta_fechas = mysql_query($sql_fechas) or die(mysql_error());
  4. $row_fechas  = mysql_fetch_array($rpta_fechas);
  5.  
  6. $fecha_hoy        = date($row_fechas['fecha_evento'],strtotime('-12 months'));
  7. $fecha_registrada = $row_fechas['fecha_evento'];
  8.  
  9. #if abreviado.
  10. $nueva_fecha_reg  = ($fecha_hoy==$fecha_registrada)?$fecha_hoy:$fecha_registrada;
  11.  
  12. #consulto para mostrar el ultimo evento.
  13. $sql_galeria_eventos  = "SELECT g.idgaleria, g.categoria_eventos, g.nombre_evento,g.fecha_evento, gf.fotos, gf.fotos_thb
  14.                         FROM sense_galeria g, sense_galeria_fotos gf
  15.                         WHERE g.idgaleria = gf.idgaleria
  16.                         AND g.fecha_evento = '".$fecha_hoy."'
  17.                         ORDER BY g.fecha_evento DESC";
  18. $rpta_galeria_eventos = mysql_query($sql_galeria_eventos) or die(mysql_error());
  19.  
  20. #mostrar el nombre del ultimo evento subido.
  21. $sql_titulo_eventos  = "SELECT g.idgaleria, g.nombre_evento, g.categoria_eventos, g.fecha_evento FROM sense_galeria g, sense_galeria_fotos gf
  22.                         WHERE g.idgaleria = gf.idgaleria
  23.                         AND g.fecha_evento = '".$fecha_hoy."'
  24.                         ORDER BY g.idgaleria DESC";
  25. $rpta_titulo_eventos = mysql_query($sql_titulo_eventos) or die(mysql_error());
  26. $row_titulo_evento   = mysql_fetch_array($rpta_titulo_eventos);
  27.  
  28. $fecha = $row_titulo_evento['fecha_evento'];
  29. #muestro la fecha de la bd en texto.
  30. $nueva_fecha = strftime('%A %d', strtotime($row_titulo_evento['fecha_evento']));

agradeceria si me ayudaran con mi tema.

saludos.

Última edición por esaenz22; 10/12/2010 a las 14:16 Razón: correccion.
  #2 (permalink)  
Antiguo 11/12/2010, 21:09
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: como haria para mostrar los 12 ultimos meses del año

<saludos>
cambiaste la fecha del sistema? y con que fin?
puedes por código sumarle un mes al actual y listo

en cuanto a lo que dices, las fechas de las imagenes
son de enero del 2011??

y pregunto algo más, en fecha_hoy estas restando
12 meses, es decir, que si pusiste la fecha del sistema
en enero de 2011 al restarle esos 12 meses en donde quedamos???

imagino con ese fin esta la nueva_fecha_reg, la cual,
hasta donde se aprecia, no esta haciendo nada más
que recibir valor, no debería ser con esta que se realicen
las consultas?
</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 12/12/2010, 18:07
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: como haria para mostrar los 12 ultimos meses del año

gracias por la respuesta mortiprogramador. me olvide especificar que agregue imagenes el dia jueves 06 de enbero del 2011.

pero mi pregunta es la siguiente.

es necesario realizar una consulta para preguntar en la segunda consulta la fecha del evento en orden ascendente ?.

si yo tengo imagenes del dia 08 de diciembre, me deberia mostrar el ultimo evento agregado. y terminado el año 2010, me debe mostrar el otro evento del mes de enero.

ya que si coloco el valor en el campo fecha_evento la funcion date('Y-m-d',strtotime('-12 month')), me mostraria solo el ultimo evento. eso esta bien, pero para hacer pruebas, he cambiado la fecha del sistema a enero del 2011(como mencione antes) y aun me muestra la galeria del evento de diciembre.

asi seria mi codigo sql.

Código PHP:
Ver original
  1. #consulto la fecha en orden descendente.
  2. $sql_fechas  = "SELECT fecha_evento FROM sense_galeria ORDER BY idgaleria DESC";
  3. $rpta_fechas = mysql_query($sql_fechas) or die(mysql_error());
  4. $row_fechas  = mysql_fetch_array($rpta_fechas);
  5.  
  6. $fecha_registrada = date($row_fechas['fecha_evento'],strtotime('-12 months'));
  7.  
  8. #consulto para mostrar el ultimo evento.
  9. $sql_galeria_eventos  = "SELECT g.idgaleria, g.categoria_eventos, g.nombre_evento,g.fecha_evento, gf.fotos, gf.fotos_thb
  10.                        FROM sense_galeria g, sense_galeria_fotos gf
  11.                        WHERE g.idgaleria = gf.idgaleria
  12.                        AND g.fecha_evento = '".$fecha_registrada ."'
  13.                        ORDER BY g.fecha_evento DESC";
  14. $rpta_galeria_eventos = mysql_query($sql_galeria_eventos) or die(mysql_error());
  15.  
  16. #mostrar el nombre del ultimo evento subido.
  17. $sql_titulo_eventos  = "SELECT g.idgaleria, g.nombre_evento, g.categoria_eventos, g.fecha_evento FROM sense_galeria g, sense_galeria_fotos gf
  18.                        WHERE g.idgaleria = gf.idgaleria
  19.                        AND g.fecha_evento = '".$fecha_registrada ."'
  20.                        ORDER BY g.idgaleria DESC";
  21. $rpta_titulo_eventos = mysql_query($sql_titulo_eventos) or die(mysql_error());
  22. $row_titulo_evento   = mysql_fetch_array($rpta_titulo_eventos);

que solucion puedo dar?.

saludos.

Última edición por esaenz22; 12/12/2010 a las 18:36 Razón: correccion.
  #4 (permalink)  
Antiguo 12/12/2010, 23:26
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: como haria para mostrar los 12 ultimos meses del año

Cita:
Iniciado por esaenz22 Ver Mensaje
gracias por la respuesta mortiprogramador. me olvide especificar que agregue imagenes el dia jueves 06 de enbero del 2011.

pero mi pregunta es la siguiente.

es necesario realizar una consulta para preguntar en la segunda consulta la fecha del evento en orden ascendente ?.

si yo tengo imagenes del dia 08 de diciembre, me deberia mostrar el ultimo evento agregado. y terminado el año 2010, me debe mostrar el otro evento del mes de enero.

ya que si coloco el valor en el campo fecha_evento la funcion date('Y-m-d',strtotime('-12 month')), me mostraria solo el ultimo evento. eso esta bien, pero para hacer pruebas, he cambiado la fecha del sistema a enero del 2011(como mencione antes) y aun me muestra la galeria del evento de diciembre.

asi seria mi codigo sql.

Código PHP:
Ver original
  1. #consulto la fecha en orden descendente.
  2. $sql_fechas  = "SELECT fecha_evento FROM sense_galeria ORDER BY idgaleria DESC";
  3. $rpta_fechas = mysql_query($sql_fechas) or die(mysql_error());
  4. $row_fechas  = mysql_fetch_array($rpta_fechas);
  5.  
  6. $fecha_registrada = date($row_fechas['fecha_evento'],strtotime('-12 months'));
  7.  
  8. #consulto para mostrar el ultimo evento.
  9. $sql_galeria_eventos  = "SELECT g.idgaleria, g.categoria_eventos, g.nombre_evento,g.fecha_evento, gf.fotos, gf.fotos_thb
  10.                        FROM sense_galeria g, sense_galeria_fotos gf
  11.                        WHERE g.idgaleria = gf.idgaleria
  12.                        AND g.fecha_evento = '".$fecha_registrada ."'
  13.                        ORDER BY g.fecha_evento DESC";
  14. $rpta_galeria_eventos = mysql_query($sql_galeria_eventos) or die(mysql_error());
  15.  
  16. #mostrar el nombre del ultimo evento subido.
  17. $sql_titulo_eventos  = "SELECT g.idgaleria, g.nombre_evento, g.categoria_eventos, g.fecha_evento FROM sense_galeria g, sense_galeria_fotos gf
  18.                        WHERE g.idgaleria = gf.idgaleria
  19.                        AND g.fecha_evento = '".$fecha_registrada ."'
  20.                        ORDER BY g.idgaleria DESC";
  21. $rpta_titulo_eventos = mysql_query($sql_titulo_eventos) or die(mysql_error());
  22. $row_titulo_evento   = mysql_fetch_array($rpta_titulo_eventos);

que solucion puedo dar?.

saludos.
pues si quieres obtener en un orden específico los datos,
si es necesario

ahora, en cuanto a la fecha del sistema que cambiaste,
si pones a imprimir la fecha actual en php (con el date)
te da la fecha que pusiste (2011)?

si es así, pon a imprimir también las consultas (todas)
y ejecutalas a su vez copiandolas y pegandolas en
phpmyadmin o el ide que uses para la bd, y vas probando
el asunto

nos comentas
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 13/12/2010, 08:43
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: como haria para mostrar los 12 ultimos meses del año

gracias por la respuesta mortiprogramador. cambie la fecha del sistema, puse la fecha actual con el date cambiando el dia que he registrado un evento el 06 de enero del 2011, refresque la web y me mostro la galeria.

pero si no he registrado ningun evento del mes de enero del 2011, que me muestre solo el ultimo evento. en este caso es el 08 de diciembre de este año.

mi pregunta es si es necesario hacer una consulta para las fechas como puse arriba en mi codigo ?.

hice otra modificacion en mi sql.

Código SQL:
Ver original
  1. SELECT g.idgaleria, g.nombre_evento, g.categoria_eventos, g.fecha_evento
  2. FROM sense_galeria g, sense_galeria_fotos gf
  3. WHERE g.idgaleria = gf.idgaleria
  4. AND g.fecha_evento BETWEEN DATE_ADD(NOW(), INTERVAL -12 MONTH) AND NOW()
  5. ORDER BY g.idgaleria DESC

me muestra todas las galerias de las fechas registradas hasta la fecha de hoy. pero tambien necesito especificar la fecha del evento.

sera por que mi campo fecha_evento lo puse como varchar y no como date ?

anteriormente hice una comparacion de mi campo fecha_registro y la funcion date(), pero aun asi me sigue mostrando el mismo resultado.

para no confundirlo, le dejo un enlace de mi tabla.



esa es mi duda mortiprogramador. alguien que me ayude con mi tema por favor ?.

saludos.

Última edición por esaenz22; 13/12/2010 a las 09:44 Razón: correcion.
  #6 (permalink)  
Antiguo 13/12/2010, 21:30
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: como haria para mostrar los 12 ultimos meses del año

Cita:
Iniciado por esaenz22 Ver Mensaje
gracias por la respuesta mortiprogramador,
de nada

cambie la fecha del sistema, puse la fecha actual con el date cambiando el dia que he registrado un evento el 06 de enero del 2011, refresque la web y me mostro la galeria.

es decir, la fecha actual de tu sistema en el momento de la consulta
es 2011-12-13??

pero si no he registrado ningun evento del mes de enero del 2011, que me muestre solo el ultimo evento. en este caso es el 08 de diciembre de este año.

mi pregunta es si es necesario hacer una consulta para las fechas como puse arriba en mi codigo ?.

pues leyendo más detenidamente el asunto, usaría un if en mysql que vaya revisando cada fecha traida, y que compare el mes de la fecha traida contra el mes actual, y si hay coincidencias (enero con enero) que haga 'S' para todos, y si no hay iguales, entonces que revise los de diciembre (un mes atrás) y le ponga 'S' si el día del evento es el 8 (en caso que solo quieras el evento de ese día), y al resto de eventos les ponga 'N', y finalmente vos mostrarías los que tengan 'S'

Ej:

Código SQL:
Ver original
  1. IF(MONTH(created) = MONTH(NOW()),'S','N') AS mostrar

hice otra modificacion en mi sql.

Código SQL:
Ver original
  1. SELECT g.idgaleria, g.nombre_evento, g.categoria_eventos, g.fecha_evento
  2. FROM sense_galeria g, sense_galeria_fotos gf
  3. WHERE g.idgaleria = gf.idgaleria
  4. AND g.fecha_evento BETWEEN DATE_ADD(NOW(), INTERVAL -12 MONTH) AND NOW()
  5. ORDER BY g.idgaleria DESC

me muestra todas las galerias de las fechas registradas hasta la fecha de hoy. pero tambien necesito especificar la fecha del evento.

es decir, esa consulta esta así??

Código SQL:
Ver original
  1. SELECT g.idgaleria, g.nombre_evento, g.categoria_eventos, g.fecha_evento
  2. FROM sense_galeria g, sense_galeria_fotos gf
  3. WHERE g.idgaleria = gf.idgaleria
  4. AND g.fecha_evento BETWEEN 2010-12-13 AND 2011-12-13
  5. ORDER BY g.idgaleria DESC

a eso podrías agregarle otro AND para especificar una fecha como tal

sera por que mi campo fecha_evento lo puse como varchar y no como date ?

puede ser, de hecho es recomendable usar cada campo como debe ser,
sin embargo veo que en el mer que tienes ya esta como date

anteriormente hice una comparacion de mi campo fecha_registro y la funcion date(), pero aun asi me sigue mostrando el mismo resultado.

para no confundirlo, le dejo un enlace de mi tabla.



esa es mi duda mortiprogramador. alguien que me ayude con mi tema por favor ?.

saludos.
revisa eso y comentas
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: año, meses, ultimo
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 02:03.