Foros del Web » Programando para Internet » PHP »

comparando fechas

Estas en el tema de comparando fechas en el foro de PHP en Foros del Web. hola gente, les comento mi problema... estoy armando una pagina de anuncios, y quiero que en sierto tiempo se borren auntomaticamente de la base de ...
  #1 (permalink)  
Antiguo 20/03/2003, 10:21
Usuario no validado
 
Fecha de Ingreso: enero-2002
Ubicación: Bueno Aires
Mensajes: 156
Antigüedad: 22 años, 10 meses
Puntos: 0
comparando fechas

hola gente, les comento mi problema...
estoy armando una pagina de anuncios, y quiero que en sierto tiempo se borren auntomaticamente de la base de datos...

lo que tenia pensado hacer era grabar en la base de datos la fecha en la que se debe borrar y despues comparara desde un sitio esa fecha con la original y si es la misma o anteriror que borre ese anuncio de la DB...
el tema es que no se como hacer esto ya que la fecha la guardo en la base de datos como un texto ( por ej. 20/03/03), y no se como comparala...

bueno espero que me puedan ayudar y que se entienda mi problema...

desde ya muchas gracias...!!!
  #2 (permalink)  
Antiguo 20/03/2003, 10:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
La fecha lo guardas en un campo tipo "VARCHAR"? .. Porqué no usas un campo DATETIME o un TIMESTAMP? ...

Otra detella .. Si ya guardas la fecha en que se publicó el mensaje .. No hace falta que guardes la fecha en la que se ha de borrar .. Podrias calcular la fecha de tu BD + X dias <= fecha_hoy .. borras registro ..

Opcion 1:
Haz una consulta a tu BD (SELECT) con todos los registros de tu BD .. UNO a UNO:

Usa funciones de explode() al caracter \ para obtener tu dia/mes/año .. luego usa mktime() para componer la fecha en formato timestamp y lo comparas con la fecha actual/hora en formato timestamp q te entrega time() ..

Si no está en ese rango .. haces un DELETE de ese registro ...

(para nada es optimo esta opción)

Opcion 2:
Guarda tu fecha usando campos DATE/DATETIME/TIMESTAMP de tus tablas de tu BD .. (que por algo estan .. )

Con eso es facil hacer una consulta tipo
DELETE FORM tabla WHERE campo_fecha+dias < NOW()

o consultas similares ..

(más optimo ..)

Guarda

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 20/03/2003, 11:05
Usuario no validado
 
Fecha de Ingreso: enero-2002
Ubicación: Bueno Aires
Mensajes: 156
Antigüedad: 22 años, 10 meses
Puntos: 0
gracias, voy a probarlo....

en la linea para deletear el campo..., dodne usas NOW() eso seria la fecha actual?????

se puede vez de <NOW() usar <=NOW()

mil gracias
  #4 (permalink)  
Antiguo 20/03/2003, 11:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
NOW() es la fecha/hora actual .. Es una funcion de Mysql no de PHP.

Puedes usar culaquier operador lógico .. incluso si te hace falta AND, OR .. etc ...

Revisa las funciones de Mysql para trabajar con fechas:
http://www.mysql.com/doc/en/Date_and...functions.html

Y los tipos de datos de tablas .. para Msyql
http://www.mysql.com/doc/en/Column_types.html

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 20/03/2003, 12:12
Usuario no validado
 
Fecha de Ingreso: enero-2002
Ubicación: Bueno Aires
Mensajes: 156
Antigüedad: 22 años, 10 meses
Puntos: 0
oka, gracias, entonces a ver si ahora estoy en lo correcto...loque debo hacer es:
1- en php genero la fecha con la funcion time()
2- guardo esa informacion en la base de datos en un campo TIMESTAMP
3- gurado en la base de datos del mismo anuncio cuantos dia dura este anuncio
4- hago un programa que se fije con la consulta que me diste antes si ese anuncio es anterior a la fecha actual
5- si es asi que lo borre...

estoy en lo correcto , o entendi todo mal!
si asi por favor explicame bien, porque lo que no se bien es como pongo la fecha en el TIMESTAMP y como la imprimo en la pantalle en formato dd/mm/yy

muchas gracias
  #6 (permalink)  
Antiguo 20/03/2003, 12:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
En tu opción .. el punto 2 sería un campo tipo INT (entero) ..
El formato de un una fecha timestamp de PHP (UNIX) se lo das con la función date().

Pero si quieres optimizalor .. podrias usar campos DATETIME de Msyql y todas las fuciones de tratamiento de fechas de Mysql .. como por ejemplo DATE_FORMAT() para extraer el formato de fecha que guara un DATE o DATETIME que es ODBC standar (mm/dd/aaaa ...) y darle el formato que tu quieras ..

Te insisto y recomiendo que leas mas sobre SQL de Mysql .. Pues todo lo que hagas en Mysql suele ser mas optimo que hacerlo entre PHP y Mysql a medias ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 20/03/2003, 17:26
Usuario no validado
 
Fecha de Ingreso: enero-2002
Ubicación: Bueno Aires
Mensajes: 156
Antigüedad: 22 años, 10 meses
Puntos: 0
gracias cluster, ya lo sulucione con campos DATE dandole formta con la funcion de SQL que sitas anteriormente...
y funciona de maravilla..

mil gracias por todo...
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:43.