Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Como sacar una consulta con datos del mes actual

Estas en el tema de Como sacar una consulta con datos del mes actual en el foro de PHP en Foros del Web. Buenas tardes, os escribo porque estoy haciendo un sistema de noticias y comentarios para una web y la verdad me habéis ayudado bastante por aqui ...
  #1 (permalink)  
Antiguo 15/07/2013, 14:22
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Como sacar una consulta con datos del mes actual

Buenas tardes, os escribo porque estoy haciendo un sistema de noticias y comentarios para una web y la verdad me habéis ayudado bastante por aqui con algunos errores.
Ya lo tengo todo montado, la programación para el sistema de noticias y comentarios, y un directorio para que cada noticia se guarde en el mes que le corresponde. Les dejo la imagen abajo.



Desde el directorio se accede correctamente a las noticias de cada mes con la consulta:
Código PHP:
Ver original
  1. $mes = $_GET["mes"];
  2. $mesfin = $_GET["mes"]+1;
  3. $year = $_GET["year"];
  4. function nombremes($mes)
  5. {
  6. if ($mes == 01) return "Enero";
  7. if ($mes == 02) return "Febrero";
  8. if ($mes == 03) return "Marzo";
  9. if ($mes == 04) return "Abril";
  10. if ($mes == 05) return "Mayo";
  11. if ($mes == 06) return "Junio";
  12. if ($mes == 07) return "Julio";
  13. if ($mes == 08) return "Agosto";
  14. if ($mes == 09) return "Septiembre";
  15. if ($mes == 10) return "Octubre";
  16. if ($mes == 11) return "Noviembre";
  17. if ($mes == 12) return "Diciembre";
  18. }
  19. function nombreyear($year)
  20. {
  21. if ($year == 2013) return "2013";
  22. if ($year == 2014) return "2014";
  23. }
  24. $query_Recordset1 = "SELECT * FROM tblnoticias WHERE tblnoticias.fecha BETWEEN '$year/$mes/01' AND '$year/$mesfin/01' ORDER BY tblnoticias.fecha DESC, tblnoticias.hora DESC ";

Esto lo hace correctamente. La historia esta en lo siguiente.
Antes, en la página de la imagen (noticias.php) aparecían todas las noticias, ya que no tenía el directorio creado. Pero ahora al tener el directorio no se como cambiar la consulta de manera que solo me salgan en la pantalla las noticias del mes en el que estamos. Es decir, si estamos en Julio 2013 que solo me aparezcan las de ese mes y no las de junio o todas las que hay. Pero que no tenga yo que actualizarlo cada mes, sino que detecte automáticamente en qué mes estamos. Algo así como el CURRENT_DATE que coge la fecha actual pero para el mes. Ahora mismo tengo esta consulta que es para que aparezcan todas las noticias:

Código PHP:
Ver original
  1. SELECT * FROM tblnoticias ORDER BY tblnoticias.fecha DESC, tblnoticias.hora DESC

¿Cómo hago para que se muestren solo las noticias del mes en curso y no las anteriores?
Tengo una idea de como tengo que crear la consulta pero no llego a conseguirlo. Si alguien me puede echar una mano con esto se lo agradezco mucho.
Espero haberme explicado bien. Si no es así, vuelvo a subir la info intentando explicarlo mejor.
Gracias por adelantado.
Raúl
  #2 (permalink)  
Antiguo 15/07/2013, 14:35
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 7 meses
Puntos: 130
Respuesta: Como sacar una consulta con datos del mes actual

Tienes que sacar la fecha actual y editar la consulta para que muestre solo las del mes actual.

Puedes guardar la fecha en una variable y luego utilizarla en la consulta.

Saludos.
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting
  #3 (permalink)  
Antiguo 15/07/2013, 14:43
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Como sacar una consulta con datos del mes actual

Cita:
Iniciado por CoriaWeb Ver Mensaje
Tienes que sacar la fecha actual y editar la consulta para que muestre solo las del mes actual.

Puedes guardar la fecha en una variable y luego utilizarla en la consulta.

Saludos.
Gracias CoriaWeb por la pronta respuesta. A eso me refería, que se que debe ser así pero a la hora de escribir la consulta no logro hacerlo. He estado leyendo dobre DATEPART() que parece que es la manera en la que podría sacar el mes para luego utilizarlo en una variable, pero..... ¿¿ como debo escribir la consulta ??

Ahí es donde me pierdo.
Gracias una vez mas.
Raúl
  #4 (permalink)  
Antiguo 15/07/2013, 16:19
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 7 meses
Puntos: 130
Respuesta: Como sacar una consulta con datos del mes actual

En que formato tienes la fecha guardada en tu base de datos?

Segun veo en tu codigo primero creo que la guardas como año/mes, si es asi usa esto:

Código PHP:
Ver original
  1. $fecha=date("Y/m");

Y la consulta la pones asi:

Código PHP:
Ver original
  1. $consulta = mysql_query("SELECT * FROM tblnoticias WHERE tblnoticias.fecha='".$fecha."' ORDER BY tblnoticias.fecha DESC, tblnoticias.hora DESC");
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting
  #5 (permalink)  
Antiguo 15/07/2013, 16:46
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Como sacar una consulta con datos del mes actual

Cita:
Iniciado por CoriaWeb Ver Mensaje
En que formato tienes la fecha guardada en tu base de datos?

Segun veo en tu codigo primero creo que la guardas como año/mes, si es asi usa esto:

Código PHP:
Ver original
  1. $fecha=date("Y/m");

Y la consulta la pones asi:

Código PHP:
Ver original
  1. $consulta = mysql_query("SELECT * FROM tblnoticias WHERE tblnoticias.fecha='".$fecha."' ORDER BY tblnoticias.fecha DESC, tblnoticias.hora DESC");
Yo no le he colocado el formato, tiene el formato del servidor YYYY/mm/dd. He declarado la variable

Código PHP:
Ver original
  1. $fecha= date("Y,m");
y tambien
Código PHP:
$fechadate("YYYY,mm"); 
y la consulta tal como me dijiste:
Código PHP:
SELECT FROM tblnoticias WHERE tblnoticias.fecha='".$fecha."' ORDER BY tblnoticias.fecha DESCtblnoticias.hora DESC 
pero no me sale ninguna noticia ahora.

He estado leyendo que con DATEPART() puedo sacar el mes de la fecha completa a una variable para usarla, y he leido algo como que DATEPART(month,getdate()) me saca solo el mes actual.... pero he intentado implementarlo de un monton de formas y no me da resultado ninguno.

Como tu me indicaste no me devuelve ninguna noticia, aunque no me devuelve ningun error tampoco
  #6 (permalink)  
Antiguo 15/07/2013, 16:46
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Como sacar una consulta con datos del mes actual

estoy aprendiendo base de datos mysql, creo que lo puedes hacer con curdate(), now() y sysdate() que son propias de la base de datos no de php.

select * from tabla where fecha = curdate()/now()/sysdate //elige entre una de esas funciones separadas con /
  #7 (permalink)  
Antiguo 15/07/2013, 16:49
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 7 meses
Puntos: 130
Respuesta: Como sacar una consulta con datos del mes actual

Si es como dices tiene que ser asi:

Código PHP:
Ver original
  1. $fecha= date("Y/m/d");

pruebalo si no ponme una fecha tal y como la guarda en la base de datos para decirte como hacerlo.
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting
  #8 (permalink)  
Antiguo 15/07/2013, 17:09
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Como sacar una consulta con datos del mes actual

Cita:
Iniciado por CoriaWeb Ver Mensaje
Si es como dices tiene que ser asi:

Código PHP:
Ver original
  1. $fecha= date("Y/m/d");

pruebalo si no ponme una fecha tal y como la guarda en la base de datos para decirte como hacerlo.
Me lo sigue devolviendo sin la consulta. Sin ninguna noticia
Si la fecha es por ejemplo el 16/07/2013 en la base de datos se guarda como 2013-07-16 que es como me lo devuelve al hacer las consultas.
  #9 (permalink)  
Antiguo 15/07/2013, 17:33
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 7 meses
Puntos: 130
Respuesta: Como sacar una consulta con datos del mes actual

A ver, podrias probar con algo asi....

Código PHP:
Ver original
  1. <?php
  2. $fechahoy=date("m");
  3. $fecharecibidadeconsulta='2013-07-17';
  4.  
  5. $mesactual = explode("-", $fecharecibidadeconsulta);
  6.  
  7. //Si la fecha actual es igual al mes se muestra
  8. if($fechahoy==$mesactual[1]){
  9.     echo "Se muestra la noticia por ser de este mes";
  10.     //aquí muestras los datos de la consulta
  11.     echo $mesactual[1];
  12. }else{
  13.     echo "Estas viendo esto porque no hay noticias de este mes";   
  14. }
  15.  
  16.  
  17. ?>

Si lo unes a un bucle podria servir...
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting

Última edición por CoriaWeb; 15/07/2013 a las 17:47
  #10 (permalink)  
Antiguo 15/07/2013, 18:49
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Como sacar una consulta con datos del mes actual

Cita:
Iniciado por CoriaWeb Ver Mensaje
A ver, podrias probar con algo asi....

Código PHP:
Ver original
  1. <?php
  2. $fechahoy=date("m");
  3. $fecharecibidadeconsulta='2013-07-17';
  4.  
  5. $mesactual = explode("-", $fecharecibidadeconsulta);
  6.  
  7. //Si la fecha actual es igual al mes se muestra
  8. if($fechahoy==$mesactual[1]){
  9.     echo "Se muestra la noticia por ser de este mes";
  10.     //aquí muestras los datos de la consulta
  11.     echo $mesactual[1];
  12. }else{
  13.     echo "Estas viendo esto porque no hay noticias de este mes";   
  14. }
  15.  
  16.  
  17. ?>

Si lo unes a un bucle podria servir...

Lo he colocado tal cual me dices y me muestra el echo "se muestra la noticia por ser de este mes07" pero el apartado de noticias sigue estando en blanco, no hace la consulta. Me devuelve el 07 porque esta declarado en $fecharecibidadeconsulta, pero si lo quito y le pongo formato Y/m/d por ejemplo no me hace nada.

Pensando yo, no recibe ninguna fecha porque viene del menú directamente, desde el boton noticias.... y si al botón 'noticias' le hago que pase por GET la fecha actual ¿recibiría la fecha y podría trabajar con ella? ¿o no funcionaría? yo la verdad es que me estoy volviendo loco con esto. Le he dado mil vueltas y no consigo encontrar una solución. ¿Tan complicado es?
  #11 (permalink)  
Antiguo 15/07/2013, 20:57
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 7 meses
Puntos: 130
Respuesta: Como sacar una consulta con datos del mes actual

1º - A ver... creo que andamos liados... vamos a centrarnos.. el problema es que tienes una pagina donde se muestran todas las noticias de la base de datos y lo que quieres es limitarla a el mes en el que estamos, cierto?

2º - Puedes mostrar el codigo que tienes actualmente?

3º - No es dificil, solo necesitamos aclararnos :D
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting
  #12 (permalink)  
Antiguo 15/07/2013, 23:35
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Como sacar una consulta con datos del mes actual

Si los campos de tu tabla son del tipo Date, DateTime o TimeStamp y quieres las noticias del mes en curso necesitas algo como esto
Código MySQL:
Ver original
  1. SELECT * FROM tblnoticias WHERE MONTH(tblnoticias.fecha)= MONTH(NOW()) ORDER BY tblnoticias.fecha DESC

Si requiere un mes en particula digamos julio, solo cambia la consulta un poco
Código MySQL:
Ver original
  1. SELECT * FROM tblnoticias WHERE MONTH(tblnoticias.fecha)= 7 ORDER BY tblnoticias.fecha DESC

Ya tienes la idea ahora solo tienes que adaptarla a tu codigo
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #13 (permalink)  
Antiguo 16/07/2013, 17:09
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Como sacar una consulta con datos del mes actual

Cita:
Iniciado por hhs Ver Mensaje
Si los campos de tu tabla son del tipo Date, DateTime o TimeStamp y quieres las noticias del mes en curso necesitas algo como esto
Código MySQL:
Ver original
  1. SELECT * FROM tblnoticias WHERE MONTH(tblnoticias.fecha)= MONTH(NOW()) ORDER BY tblnoticias.fecha DESC

Si requiere un mes en particula digamos julio, solo cambia la consulta un poco
Código MySQL:
Ver original
  1. SELECT * FROM tblnoticias WHERE MONTH(tblnoticias.fecha)= 7 ORDER BY tblnoticias.fecha DESC

Ya tienes la idea ahora solo tienes que adaptarla a tu codigo
Muchas muchas gracias hhs, no pensé finalmente que fuera más fácil y más lógico.
Me funcionan a la perfección cualquiera de las dos opciones que me pusiste. Así que ya se cumple la consulta para el mes actual que es lo que necesitaba.
Gracias de nuevo.

Gracias también Coriweb por los aportes. Aunque no dimos con la solución aprendí un par de cosas.

Saludos grandes a todos.
Raúl.
  #14 (permalink)  
Antiguo 16/07/2013, 17:30
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 7 meses
Puntos: 130
Respuesta: Como sacar una consulta con datos del mes actual

Verdad.. yo no habia caido en eso.. pero bueno, ya sabes muy agradecido en haberte intentao de ayudar :P
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting

Etiquetas: actual, select
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:31.