Foros del Web » Programando para Internet » PHP »

Comparar fecha con vencimiento

Estas en el tema de Comparar fecha con vencimiento en el foro de PHP en Foros del Web. Buenas a todos, Tengo una consulta sobre fecha, yo publico un mensaje el 2014-8-18 y quiero que al mes se caduque... hice lo siguiente: tengo ...
  #1 (permalink)  
Antiguo 18/08/2014, 15:10
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Comparar fecha con vencimiento

Buenas a todos,
Tengo una consulta sobre fecha, yo publico un mensaje el 2014-8-18
y quiero que al mes se caduque...

hice lo siguiente:

tengo 2 campos

inifecha = 2014-8-18 (fecha en que publique el mensaje)
venfecha = 2014-9-18 (fecha en que caduque la publicacion)

hice lo siguiente buscando en google.. y me sale la fecha del campo 2014-8-14, no tendira que salir la del venfecha?

Código PHP:
Ver original
  1. $hy=mysqli_query($cone," SELECT * FROM img WHERE venfecha = date_sub(curdate(), interval 30 day");
  2.  
  3. echo "fecha de vencimiento ".$infecha=$hy['venfecha'];



espero que me puedan dar una mano, gracias y saludos a todos
fede

Última edición por fedefrankk; 18/08/2014 a las 15:13 Razón: error
  #2 (permalink)  
Antiguo 19/08/2014, 03:29
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Comparar fecha con vencimiento

No sé si copiaste mal el código al momento de colocarlo acá pero te está faltando cerrar el paréntesis de la función DATE_SUB en la consulta.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 19/08/2014, 13:26
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Respuesta: Comparar fecha con vencimiento

Hola gracias por con testar, no me olvide de cerrar, lo copie, no anda, no sale nada,
el tema es que tengo el campo que inicia y el campo de vencimiento,

por defecto ese poriodo es de 30 dias, a veces yo lo puedo extender a 45 dias

como se hace? algun ejemplo.?
desde ya muchass gracias
fede
  #4 (permalink)  
Antiguo 19/08/2014, 14:01
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Comparar fecha con vencimiento

La consulta está errada pues a la fecha actual le sumas 30 días, por lo que solamente coincidirá cuando la fecha actual sea igual a la fecha de inicio. Primero tienes que definir qué dato quieres obtener y con qué fin para así poder replantear la consulta.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 19/08/2014, 14:59
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Respuesta: Comparar fecha con vencimiento

Hola, mira es asi:

publico un dibujo, ese dibujo caduca en 30 dias,

en mi base de datos almaceno la fecha de publicacion y tambien almaceno la fecha de vencimiento.

eso sabes algo se agradecera muchismimo

muchos saludos
fede
  #6 (permalink)  
Antiguo 19/08/2014, 15:31
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Comparar fecha con vencimiento

Eso está bastante claro, a lo que me refería es a qué dato deseas obtener de la consulta, cómo y con qué fin.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 19/08/2014, 15:39
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: Comparar fecha con vencimiento

no se a que se refiere pero trata con esto

$hy=mysqli_query($cone," SELECT * FROM img WHERE venfecha < date_sub(curdate(), interval 30 day");

echo "fecha de vencimiento ".$infecha=$hy['venfecha'];
  #8 (permalink)  
Antiguo 19/08/2014, 18:25
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Respuesta: Comparar fecha con vencimiento

hola con respecto a lo siguiente

Cita:
Eso está bastante claro, a lo que me refería es a qué dato deseas obtener de la consulta, cómo y con qué fin.
con el fin de que cada foto se vence en un mes, entonces si por ejemplo se vencio, al usuario de esa foto le sale que esta vencido, y mas complicado seria o no, seria que 10 dias antes le diga que esta por vencerce..

saludos y gracias
fede
  #9 (permalink)  
Antiguo 19/08/2014, 22:15
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Comparar fecha con vencimiento

En ese caso, la consulta tendría que tener otra lógica:
  • Si la fecha actual es mayor o igual a la fecha final menos diez días y es menor a la fecha final, se muestra la alerta de que está por vencerse el plazo.
  • Si la fecha actual es mayor o igual a la fecha final, el plazo se venció.

Entonces, la consulta sería así:

Código MySQL:
Ver original
  1. SELECT *, CURDATE() AS hoy, DATE_SUB(venfecha, INTERVAL -10 DAY) AS aviso FROM img

Y luego, haces la evaluación con PHP:

Código PHP:
Ver original
  1. $query = mysqli_query($conexion, 'SELECT *, CURDATE() AS hoy, DATE_SUB(venfecha, INTERVAL -10 DAY) AS aviso FROM img');
  2.  
  3. if (mysqli_num_rows($query)){
  4.     $row = mysqli_fetch_array($query);
  5.    
  6.     //Antes de que venza el plazo
  7.     if ($row['hoy'] >= $row['aviso'] && $row['hoy'] < $row['venfecha']){
  8.         echo 'El plazo está por expirar';
  9.     }
  10.  
  11.     //Cuando el plazo haya vencido
  12.     if ($row['hoy'] >= $row['venfecha']){
  13.         echo 'El plazo ha expirado';
  14.     }
  15. }

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #10 (permalink)  
Antiguo 20/08/2014, 16:36
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Respuesta: Comparar fecha con vencimiento

Hola muchas gracias por tu repuesta, y que nueno seria tener tu logica...

copie y pegue tu codigo, y siempre me sale que expiro..

lo que no se es cuando pusiste hoy y aviso, ese "hoy" es un campo de la tabla ?
y aviso tambien?.... perdon por la ignorancia pero tratode aprender siempre

Código PHP:
Ver original
  1. $query = mysqli_query($cone, 'SELECT *, CURDATE() AS hoy, DATE_SUB(venfecha, INTERVAL -10 DAY) AS aviso FROM img');
  2.  
  3. if (mysqli_num_rows($query)){
  4.     $row = mysqli_fetch_array($query);
  5.    
  6.     //Antes de que venza el plazo
  7.     if ($row['hoy'] >= $row['aviso'] && $row['hoy'] < $row['venfecha']){
  8.         echo 'El plazo está por expirar';
  9.     }
  10.  
  11.     //Cuando el plazo haya vencido
  12.     if ($row['hoy'] >= $row['venfecha']){
  13.         echo 'El plazo ha expirado';
  14.     }
  15. }

Se agradece muy enserio tu tiempo
saluos fede
  #11 (permalink)  
Antiguo 20/08/2014, 19:08
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Comparar fecha con vencimiento

Las palabras 'hoy' y 'aviso' son alias que utilizo para asignar a los valores devueltos por CURDATE() y DATE_SUB(venfecha, INTERVAL -10 DAY) y así poder tomarlos como lo ves líneas más abajo. También pudiste haberlo hecho con PHP, pero es más rápido hacerlo en la consulta.

Y bueno, con respecto a lo otro, el error es mío. Para comparar a las fechas de esa forma, primero hay que convertirlas al formato timestamp, lo cual puedes hacer desde PHP, pero con MySQL, también es posible.

Código PHP:
Ver original
  1. $query = mysqli_query($cone, 'SELECT *, UNIX_TIMESTAMP(CURDATE()) AS hoy, UNIX_TIMESTAMP(DATE_SUB(venfecha, INTERVAL -10 DAY)) AS aviso, UNIX_TIMESTAMP(venfecha) AS vence FROM img');
  2.  
  3. if (mysqli_num_rows($query)){
  4.     $row = mysqli_fetch_array($query);
  5.    
  6.     //Antes de que venza el plazo
  7.     if ($row['hoy'] >= $row['aviso'] && $row['hoy'] < $row['vence']){
  8.         echo 'El plazo está por expirar';
  9.     }
  10.  
  11.     //Cuando el plazo haya vencido
  12.     if ($row['hoy'] >= $row['vence']){
  13.         echo 'El plazo ha expirado';
  14.     }
  15. }

Lo único que hice fue aplicar a los datos en cuestión la función UNIX_TIMESTAMP y así obtengo la cantidad de segundos transcurridos desde las 00:00:00 horas del 1 de enero de 1970 hasta las fechas en cuestión. El asterisco del inicio puede desaparecer si es que no piensas tomar datos de otros campos de la tabla.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #12 (permalink)  
Antiguo 21/08/2014, 16:04
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Respuesta: Comparar fecha con vencimiento

Hola como siempre gracias a tu rpuesta y tu tiempo, lamentablemente no sale nada, copio y pego y nada, te dejo una imagen de la base de datos, he cambiado las fecha y no aparece nada.. se que el error esta en lo mio, pero no se donde













saludos cordiales
fede
  #13 (permalink)  
Antiguo 21/08/2014, 17:04
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Comparar fecha con vencimiento

¿Y no será porque no se cumple ninguna de ambas condiciones? Digo, ahí veo que colocas como fecha de inicio la de hoy (21 de agosto), si le restas diez días a la fecha final que es el 25 de octubre, estarás en el 15 de octubre, por lo tanto ni la primera ni la segunda condición se cumplen y, por ende y simple lógica, no se mostrará mensaje alguno.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #14 (permalink)  
Antiguo 21/08/2014, 17:33
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Respuesta: Comparar fecha con vencimiento

Hola, tienes razon.. pido disculpa por la distraccion.!!
saludos y muchas gracias
fede

Etiquetas: fecha, mysql, select, sql
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 08:15.