Tiene 2 opciones para administrar esto según la escala de tiempo que seleccionen.
-
Almacene un tiempo de caducidad con el anuncio e incluya caducidad> AHORA(); en cualquier consulta para seleccionar anuncios (esto anula el requisito de un campo 'activo'.
-
use un evento para administrar esto.
El método 1 puede requerir que algún administrador "limpie los anuncios" periódicamente.
Método 2:aún no puede crear eventos en un procedimiento (la última vez que lo comprobé), pero le permiten configurar y olvidar este tipo de tareas administrativas sin tener que ejecutar otras comprobaciones y demás.
Cada evento debe tener un nombre único; de lo contrario, eliminará el evento ya especificado...
ejemplo:
<?php
$qry = "insert into ads values ( 'x', 'y', 'z' );";
/* db execute qry (pdo or what ever) */
$adId = // retriev a unique reference for ad.
$days = $_POST['expire'] == 16 ? 16 : 8;
$qry = "CREATE EVENT updateAd_".$adId."
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL ".$days." DAY
ON COMPLETION NOT PRESERVE
DO
update ads set active = 'false' where ad_id = ".$adId.";";
// db execute qry (pdo or what ever);
?>
El evento se almacena en la base de datos mysql y no en la suya, por lo que necesita algunos permisos de nivel de administrador para implementarlo.