Máte dvě možnosti, jak to spravovat, a to na základě zvoleného časového rámce.
-
Uložte s reklamou dobu platnosti a zahrňte expiraci> NOW(); v jakýchkoli dotazech k výběru reklam (tento druh neguje požadavek na pole „aktivní“.
-
ke správě použijte událost.
Metoda 1 může vyžadovat, aby někteří správci pravidelně 'čistili reklamy'.
Metoda 2 – v proceduře ještě nemůžete vytvářet události (když jsem to kontroloval naposledy), ale umožňují vám nastavit a zapomenout na tento druh povinností správce, aniž byste museli spouštět další kontroly a co ne.
Každá událost musí mít jedinečný název, jinak zrušíte již zadanou událost...
příklad:
<?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);
?>
Událost je uložena v databázi mysql a ne ve vaší vlastní, takže k implementaci potřebujete určitá oprávnění na úrovni správce.