¿Cómo configuro la fecha de vencimiento de mis datos en MYSQL? Y cómo eliminar automáticamente el paquete SILVER de User1 en la fecha de vencimiento y actualizar automáticamente al paquete FREE.

El paquete User2 y GOLD tiene la misma pregunta que User1.

Para un ejemplo :

Me gustaría establecer la fecha de vencimiento para SILVER y GOLD paquete como este:

SILVER Package for 1 Month (30 days)
GOLD   Package for 2 Months (60 days)

User1 compre un paquete SILVER en 27/1/2559 16:20 y este paquete se eliminó de User1 el 26/2/2016 16:20 y luego se actualizará automáticamente al paquete FREE para {{ X6}}.

User2 compre un paquete GOLD en 15/3/2559 16:20 y este paquete se eliminó de User2 el 14/5/2016 16:20 y luego se actualizará automáticamente al paquete FREE para {{ X6}}.

tbl_package

| id | name   |
---------------
| 1  | FREE   |
| 2  | SILVER |
| 3  | GOLD   |

tbl_member

| id | name  | package |
------------------------
| 1  | User1 | SILVER  |
| 2  | User2 | GOLD    |
| 3  | User3 | Free    |

2
Vintage Beef 28 ene. 2016 a las 05:14

2 respuestas

La mejor respuesta

Primero, agregue una columna de marca de tiempo a tbl_member, como la fecha de vencimiento. Configure la columna para que sea nula de forma predeterminada. Cuando el usuario actualice, actualice esta nueva columna en su código PHP.

Algo tiene que ejecutarse para cambiar los paquetes caducados. Si bien la opción más eficiente es un script cron automático que se ejecuta diariamente o cada hora, simplemente puede ejecutarlo cada vez que un usuario inicia sesión en el sitio. Desea modificar los paquetes para cada fila de tbl_member que tienen una fecha de vencimiento en el pasado. Cambiar el paquete de valores de la columna del paquete es esencialmente lo mismo que "eliminarlo". Además, desea establecer la fecha de caducidad en nula porque el paquete gratuito nunca caduca.

Por ejemplo, este SQL debería degradar cualquier miembro al paquete gratuito si la fecha de vencimiento es anterior a la siguiente:

UPDATE tbl_member SET package="Free",expire=null WHERE expire < now()
2
BradzTech 28 ene. 2016 a las 03:11

Puede crear trabajos cron para hacer esto, comprobará todos los días para encontrar un miembro expriado y actualizarlos. Puede leer aquí http://goo.gl/VJIHkE

1
thaihoc06 28 ene. 2016 a las 03:07