Foros del Web » Programando para Internet » PHP »

borrar registros automaticamente

Estas en el tema de borrar registros automaticamente en el foro de PHP en Foros del Web. Hola de nevo chic@s!! lo que intento hacer es borrar los registros en una BD automaticamente mediante fechas. A lo que me refiero es que ...
  #1 (permalink)  
Antiguo 25/09/2013, 05:48
Avatar de ken-obi  
Fecha de Ingreso: julio-2004
Ubicación: Alicante
Mensajes: 314
Antigüedad: 19 años, 8 meses
Puntos: 6
borrar registros automaticamente

Hola de nevo chic@s!!
lo que intento hacer es borrar los registros en una BD automaticamente mediante fechas. A lo que me refiero es que si existe algun registro inferior a 7 dias que se borre.

Código PHP:
mysql_query("DELETE * FROM ajaxfavourites WHERE fecha < '$userFechaIn' - 7"); 
Pero esto no funciona..:( y estoy buscando por internet y no encuentro nada.

Gracias de antemanooo!!!
__________________
Un mundo sin fin... !!! viva los moros y cristianos de ELDA !!!
  #2 (permalink)  
Antiguo 25/09/2013, 06:16
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: borrar registros automaticamente

Datetime functions ahí tienes las funciones.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 25/09/2013, 06:22
Avatar de ken-obi  
Fecha de Ingreso: julio-2004
Ubicación: Alicante
Mensajes: 314
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: borrar registros automaticamente

Gracias pero...
Es que el registro guarda algo parecido a: 201309251420

y tambien prove con:

Código PHP:
mysql_query("DELETE * FROM ajaxfavourites WHERE fechafin < '$userFechaIn"); 
en la BD tengo dos campos que son fecha y fechafin.

Gracias
__________________
Un mundo sin fin... !!! viva los moros y cristianos de ELDA !!!
  #4 (permalink)  
Antiguo 25/09/2013, 06:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: borrar registros automaticamente

¿El tipo de campo de la tabla es DATETIME, TIMESTAMP o VARCHAR?
Según cual sea, será la función que hay que usar...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 25/09/2013, 06:29
Avatar de ken-obi  
Fecha de Ingreso: julio-2004
Ubicación: Alicante
Mensajes: 314
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: borrar registros automaticamente

El campo es de VARCHAR.
__________________
Un mundo sin fin... !!! viva los moros y cristianos de ELDA !!!
  #6 (permalink)  
Antiguo 25/09/2013, 06:33
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: borrar registros automaticamente

fechafin si no es datetime, craso error, tienes dos opciones
1.transformarlo con date() y las funciones de string para separar las partes de la fecha si es char o varchar.
2.Si es un numérico te debería funcionar siempre que $userFechaIn tenga el mismo formato.
Código PHP:
Ver original
  1. mysql_query("DELETE * FROM ajaxfavourites WHERE fechafin < ". $userFechaIn.";");

Puesto que 201309251420<201309300000, interpretando 2013-09-25 14:20:00 y 2013-09-30 00:00:00. Si es varchar tambien puedes hacerlo directamente ya que "201309251420"<"201309300000".

Lo que no puedes hacer es comparar "201309251420" con "2013-09-30"
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 25/09/2013 a las 06:40 Razón: Soy lento escribiendo
  #7 (permalink)  
Antiguo 25/09/2013, 06:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: borrar registros automaticamente

Bueno... eso es lo que en general en Bases de DAtos denominamos "enorme metida de pata"... SIn ofender.
Un campo de fecha debe SIEMPRE ser de tipo fecha (DATE, DATETIME o TIMNESTAMP), pero jamás debe definirse como VARCHAR. Lo único que hace es causar problemas como este.
Hay dos caminos de solución:
1) Corriges el defecto del tipo de campo, migrando los datos con su conversión correspondiente.
2) Usas funciones de conversión de cadena a fecha cada vez que debas usar una fecha como parámetro.

¿QUé eliges?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 25/09/2013, 07:21
Avatar de ken-obi  
Fecha de Ingreso: julio-2004
Ubicación: Alicante
Mensajes: 314
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: borrar registros automaticamente

Por mucho que lo intente no me funciona...
__________________
Un mundo sin fin... !!! viva los moros y cristianos de ELDA !!!
  #9 (permalink)  
Antiguo 25/09/2013, 07:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: borrar registros automaticamente

¿Qué no te funciona?
Trata de ser más específico.

Desde el punto de vista de MySQL, la sentencia a usar, en función de los datos defectuosos que tienes, es:
Código MySQL:
Ver original
  1. DELETE FROM ajaxfavourites
  2. WHERE STR_TO_DATE(fecha, '%Y%m%d%H%i%s') < DATE_SUB('$userFechaIn', INTERVAL 7 DAY);
Siempre teniendo en cuenta que el valor contenido en $userFechaIn tiene el formato: AAAA-MM-DD, y no otra cosa.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 25/09/2013 a las 07:32

Etiquetas: automaticamente, fecha, mysql, registro, registros
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 01:44.