Php 3天后从表中隐藏删除按钮

Php 3天后从表中隐藏删除按钮,php,mysql,Php,Mysql,我有一个从mysql数据库调用记录的php表 DATE | CUSTOMER | QUANTITY | ACTIONS 每行在列操作中都有一个删除按钮: <a href="purchases.php?order_id=' . $row['id'] . '" onClick="return confirm(\''. $LANG['del_purchase'] .'\');"> <img src="images/delete.pn

我有一个从mysql数据库调用记录的php表

DATE | CUSTOMER | QUANTITY | ACTIONS
每行在列操作中都有一个删除按钮:

<a href="purchases.php?order_id=' . $row['id'] . '" onClick="return confirm(\''. $LANG['del_purchase'] .'\');">
<img src="images/delete.png" width="16" height="16" title="delete" style="margin:1px;"/>`

`
有没有办法在“日期”列中的日期起3天后隐藏“删除”按钮

非常感谢


<?php
$date = new DateTime($row['date']);
$checkDate = new DateTime('-3 days');
if ($date > $checkDate) {
?>
    <a href="purchases.php?order_id=' . $row['id'] . '" onClick="return confirm(\''. $LANG['del_purchase'] .'\');">
        <img src="images/delete.png" width="16" height="16" title="delete" style="margin:1px;"/>
    </a>
<?php
}
?>
这将为您的日期创建一个
DateTime
对象,并为从现在开始的3天前创建一个对象,然后检查您的日期是否大于该日期(晚于该日期),并仅根据该条件的结果显示“删除”按钮

显然,您需要确保使用列名而不是
date
,并确保它是一种可以理解的格式。

$originalDatePlusThreeDays=strotime(>.+3天”);
$originalDatePlusThreeDays = strtotime( <<< your date from DB >>> . '+3 days');
...
if ($originalDatePlusThreeDays <= strtotime('now')) {
    echo 'your button';
}
...
如果($originalDatePlusThreeDays谢谢大家的回答

好的,代码是有效的,但是……在您看来,为什么我的表失去了样式和对列进行排序的机会

这仅适用于intranet项目,如果不太安全也没关系

<?php 
                  
                   echo '<table id="Data" width="100%" cellpadding="3" cellspacing="0">';
                    echo '<thead>';
                    // echo '<th style="width: 19px;" class="default"></th>';
                    echo '<th class="default" style="width: 60px; text-align: left;">'. $LANG['date'] .'</th>';
                    echo '<th style="width: 90px; text-align: center;" class="default">'. $LANG['pr_code'] .'</th>';
                    echo '<th style="width: 65px; text-align: center;" class="default">'. $LANG['quantity'] .'</th>';
                    echo '<th style="width: 40px; padding-right: 5px; padding-left: 5px; text-align: center;" class="default" id="task">'. $LANG['actions'] .'</th>';
                    echo '</thead>';
                    echo '<tbody>';
                    while ($row = mysql_fetch_assoc($results)) {

                        $orderdate = strtotime($row['or_date']);
            $fdate = strftime("%d/%m/%Y", $orderdate);
            $originalDatePlusThreeDays = strtotime($row['or_date'].'+3 days');
                        echo '<tr>';
                        echo '<td class="txtLeft">' . $fdate . '</td>';
                        echo '<td class="txtCenter">' . $row['pr_code'] . '</td>';
                        echo '<td class="txtCenter">' . $row['or_quantity'] . '</td>';
                        echo '</td>';
                        if($originalDatePlusThreeDays >= strtotime('now')) {
                        
                          echo '<td class="txtCenter" id="task1">
                             
                            
                            <a href="purchases.php?order_id=' . $row['id'] . '" onClick="return confirm(\''. $LANG['alert_purchase_del'] .'\');">
                            <img src="images/delete.png" width="16" height="16" title="delete purchase" style="margin:1px;"/>
                            </a>
                            
                            </td>'; 
                            }
                        echo '</tr>';
                    } 
                    
                    echo '</tbody>';
                    echo '</table>';
                    
                 
                ?>

在它周围放置一个
if
条件,如果你想要的日期过期,就不要渲染。除了@El_Vanja,确保让purchases.php也不允许删除。如果有人直接访问该链接,它也不应该删除该项目。我支持@Timberman所说的。不过,切换删除是明智的决定到
post
操作。比
get
安全得多@El_Vanja有多安全?你也可以使用chrome/postman发送post请求。这只比正常的get请求麻烦一点。@Timberman我的缺点是不够精确。我的意思是作为一种常规做法-不会意外触发
post
d通过访问链接或由机器人触发。这对您的普通用户来说更安全(邮递员远远超出普通用户的能力范围),您可以自动消除系统中的弱点。我同意,无论采用何种方法,您都需要在适用的情况下在代码本身中设置边界(如本问题中的三天边界)。这附带了一个警告-如果
strotime
不接受日期格式,它将失败。此外,您还缺少“now”的引号。非常感谢!好的,代码可以工作,但是……在您看来,为什么我的表失去了样式和对列进行排序的机会?我认为它失去了样式,因为如果没有按钮,您将在那里打印其他数据。您应该添加
else{echo'empty cell'}
或类似的内容。非常感谢!我决定使用“display:none”样式。