自動削除時の日付照合について

【目的】
cron機能を使用し、起算日やflagなどをもとに、自動削除する際の照合方法について纏めます。

以下、起算日(上記、フォームより変更できます)の前日未満を失効対象とするケース

日付の設定
只今の日付2024-11-21
対象月日詳細備考
★2024-11-20 1日前 継続中
2024-11-19 2日前 失効します
2024-11-18 3日前 失効します
2024-11-17 4日前 失効します
2024-11-16 5日前 失効します
2024-11-15 6日前 失効します
2024-11-14 7日前 失効します
            /*--- php ---*/
            //日付設定(postデータの有無で分岐)
            if(!isset($_POST['post_date'])){
                $toDay = date("Y-m-d");
            } else {
                $toDay = date($_POST['post_date']);
            }

            //日付を数値へ変換
            for($i = 1; $i <= 7; $i++){
                $fromDay[$i] = date("Y-m-d",strtotime("$toDay -{$i} day"));
                $fromstr[$i] = strtotime($fromDay[$i]);
            }

            //日付設定※数値計算用(postデータの有無で分岐)
            if(!isset($_POST['post_date'])){
                $todate = strtotime($toDay);
            } else {
                $todate = strtotime($_POST['post_date']);
            }

            /*--- html+php ---*/
            <table class="table1">
                <tr>
                    <th>対象月日</th><th>詳細</th><th>備考</th>
                </tr>
                <?php for($i = 1; $i <= 7; $i++){ ?>
                    <tr>
                        <?php if((($todate - $fromstr[$i]) / 86400) == 1){ ?>
                            <td>★<?=$fromDay[$i]?></td>
                            <td><?=$i?>日前</td>
                            <td>継続中</td>
                        <?php } else { ?>
                            <td><span class="target1"><?=$fromDay[$i]?></span></td>
                            <td><span class="target1"><?=$i?>日前</span></td>
                            <td><span class="target1">失効します</span></td>
                        <?php } ?>
                    </tr>
                <?php } ?>
            </table>
            

以下、起算日(2020-06-28で設定)未満を失効するケース

対象月日詳細備考
2020-06-26 -2日前 失効します
2020-06-27 -1日前 失効します
★2020-06-28 0日前 継続中
                /*--- php ---*/
                //仮データベース
                $datebase[] = array(
                    'date' => '2020-06-26',
                    'flag' => 0 
                );
                $datebase[] = array(
                    'date' => '2020-06-27',
                    'flag' => 1  
                );
                $datebase[] = array(
                    'date' => '2020-06-28',
                    'flag' => 0 
                );

                //仮の起算日の設定
                $testdate = "2020-06-28";
                $test = strtotime($testdate);

                /*--- html+php ---*/
                <table class="table1">
                    <tr>
                        <th>対象月日</th><th>詳細</th><th>備考</th>
                    </tr>
                    <?php foreach($datebase as $val){ ?>
                        <tr>
                            <?php $todate2 = strtotime($val['date']);
                                    if((($todate2 - $test) / 86400) < 0){ ?>
                                        <td><span class="target1"><?=$val['date']?></span></td>
                                        <td><span class="target1"><?=($todate2 - $test) / 86400?>日前</span></td>
                                        <td><span class="target1">失効します</span></td>
                                    <?php } else {?>
                                        <td>★<?=$val['date']?></td>
                                        <td><?=($todate2 - $test) / 86400?>日前</td>
                                        <td>継続中</td>
                                    <?php } ?>
                        </tr>
                    <?php } ?>
                </table>
            

以下、flagで失効するケース

対象月日詳細備考
2020-06-26 -2日前 失効します
★2020-06-27 -1日前 継続中
2020-06-28 0日前 失効します
                /*--- php ---*/
                //仮データベース
                $datebase[] = array(
                    'date' => '2020-06-26',
                    'flag' => 0
                );
                $datebase[] = array(
                    'date' => '2020-06-27',
                    'flag' => 1
                );
                $datebase[] = array(
                    'date' => '2020-06-28',
                    'flag' => 0
                );

                //仮の起算日の設定
                $testdate = "2020-06-28";
                $test = strtotime($testdate);

                /*--- html+php ---*/
                <table class="table1">
                    <tr>
                        <th>対象月日</th><th>詳細</th><th>備考</th>
                    </tr>
                    <?php foreach($datebase as $val){ ?>
                        <tr>
                            <?php $todate2 = strtotime($val['date']);
                                    if($val['flag'] !== 1){ ?>←変更箇所
                                        <td><span class="target1"><?=$val['date']?></span></td>
                                        <td><span class="target1"><?=($todate2 - $test) / 86400?>日前</span></td>
                                        <td><span class="target1">失効します</span></td>
                                    <?php } else {?>
                                        <td>★<?=$val['date']?></td>
                                        <td><?=($todate2 - $test) / 86400?>日前</td>
                                        <td>継続中</td>
                                    <?php } ?>
                        </tr>
                    <?php } ?>
                </table>
            

これらをもとに、cronを使用し、定時操作を行い、
SQL(DELETE)実行時に照合すれば、失効対象を自動削除できると考えております。
※検証はしておりません。