Ver Mensaje Individual
  #6 (permalink)  
Antiguo 26/01/2007, 23:33
Avatar de mariobj
mariobj
 
Fecha de Ingreso: abril-2004
Ubicación: Colombia
Mensajes: 10
Antigüedad: 20 años
Puntos: 0
Re: Programar fecha de borrado de un registro

El problema puede ser solucionado de la siguiente forma, estamos partiendo del hecho de que el usuario cuando decide darse de baja, tu manejas un campo de estado del usuario verdad? (activo/inactivo) si no es asi es lo primero que debes hacer. Con eso resuelto suponemos un usario dado de baja hoy, entonces los datos en la tabla serian asi: usuario (inactivo) fecha de baja: 26 enero de 2006.
ok?????
(no te tomes en serio la fecha obviamente ese formato no lo maneja la bd)

Ahora perdoname si vuelvo a la opcion planteada por el otro participante del foro la herramienta cron es indispensable en estos casos, el truco esta en saberla usar, cron permite ejecutar SQL sin problemas juagando con el campo de estado del usuario, y no te preocupes por sobrecargas del servidor y esas cosas, como tu planteas el problema no necesitas hacer las actualizaciones cada hora puedes hacer esa operacion en una hora determinada del dia ya que los usuarios segun tu tienen un dia para deshacer los cambios. El sql controlado por el CRON debe hacer mas o menos lo siguiente: ojo debes manejar bien operaciones entre fechas por que de otra forma imposible si quieres updatear tu bd debes:
1) Tomar la fecha actual fecha de sistema una vez la tengas, ese es tu punto de comparacion haces la consulta sql y en el condicional filtra aquellas cuya fecha de baja sea menor a la de hoy (consulta la funcion datediff o perioddiff de mysql o cualquier motor de bd tienen funciones devuelven calculos de tiempo) y ademas sean inactivas o al contrario el primer criterio de evaluacion sera el estado y luego recorres el arreglo buscando cuales cumplen la condicion de diferencia de tiempo con la hora del sistema. y listo cuando tengas el recordset que cumpla la condicion los borras y ya esta.....eso lo ejecuta el cron una vez al dia cuando tu quieras sin problema.

Otra solucion sin cron mas practica !!!!!!!!

usa otra tabla que se llame usuarios dados de baja o algo asi y cuando un usuario se de de baja lo sacas de tu tabla principal de usuarios y lo mandas a la de usuarios dados de baja, no tienes que borrarlos necesariamente si los tienes en otra tabla pues no tendras molestias en tus listados ppales de usuarios. Si el usuario se quiere reactivar en el tiempo programado (ahora sera mas facil: comparas la fecha de baja en la tabla temporal con la fecha del sistema si es menor a tu limite pues lo pasas a la principal o niegas la peticion y ya.........)

No te preocupes tanto por los la cantidad de registros recuerda que si usas MySQL en modo MyISAM el almacenamiento es infinito :) y si son tipo InnoDB pues tendras muchos terabytes :) para que mas !!!!!!!!!!!

espero te sirvan de algo mis consejos, yo uso cron en una app de facturacion y la uso una vez al dia, al final de la jornada con querys mas complejos que el tu planteas y hasta ahora no he tenido quejas de mi cliente........

suerte con eso adios...............