Masz dwie opcje zarządzania tym obiema w oparciu o wybraną skalę czasową.
-
Przechowuj czas wygaśnięcia z reklamą i dołącz wygaśnięcie> TERAZ(); we wszelkich zapytaniach dotyczących wybranych reklam (ten rodzaj neguje wymaganie dotyczące pola „aktywne”).
-
użyj wydarzenia, aby nim zarządzać.
Metoda 1 może wymagać od administratora okresowego „czyszczenia reklam”.
Metoda 2 - nie możesz jeszcze tworzyć zdarzeń w procedurze (ostatnio sprawdzałem), ale pozwalają one ustawić i zapomnieć o tego rodzaju obowiązkach administracyjnych bez konieczności uruchamiania innych sprawdzeń i innych czynności.
Każde wydarzenie musi mieć unikalną nazwę, w przeciwnym razie zabijesz już określone wydarzenie...
przykład:
<?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);
?>
Zdarzenie jest przechowywane w bazie danych mysql, a nie w Twojej, więc do jego wdrożenia potrzebne są uprawnienia administratora.