選択したタイムスケールに基づいて、これを管理する2つのオプションがあります。
-
広告に有効期限を保存し、有効期限> NOW();を含めます。広告を選択するためのクエリで(この種の「アクティブ」フィールドの要件は無効になります。
-
イベントを使用してこれを管理します。
方法1では、一部の管理者が定期的に「広告をクリーンアップ」する必要がある場合があります。
方法2-プロシージャでイベントを作成することはまだできませんが(前回チェックしたとき)、他のチェックやその他のチェックを実行しなくても、この種の管理業務を設定して忘れることができます。
各イベントには一意の名前を付ける必要があります。そうしないと、すでに指定されているイベントを強制終了します...
例:
<?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);
?>
イベントは自分のデータベースではなくmysqlデータベースに保存されるため、実装するには管理者レベルの権限が必要です。