Du har två alternativ för att hantera detta båda baserat på den tidsskala de väljer.
-
Lagra en utgångstid med annonsen och inkludera utgångsdatum> NOW(); i alla frågor för att välja annonser (denna typ förnekar kravet på ett "aktivt" fält.
-
använd en händelse för att hantera detta.
Metod 1 kan kräva att någon administratör regelbundet "städar bort annonser".
Metod 2 - du kan inte skapa händelser i en procedur ännu (sista gången jag kollade) men de tillåter dig att ställa in och glömma den här typen av administratörsuppgifter utan att behöva köra andra kontroller och vad som inte kan göras.
Varje händelse måste ha ett unikt namn annars kommer du att döda den redan specificerade händelsen...
exempel:
<?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);
?>
Händelsen lagras i mysql-databasen och inte din egen så du behöver några administratörsnivåbehörigheter för att implementera.