我正在用php建立拍卖网站。我已经计算出拍卖开始前的剩余时间。剩余时间的计算方式为$remaning = $date - time();,其中$date是直到产品拍卖开始进行的最后日期,并使用mysqli从数据库中获取它,如下所示。

<?php
if ($stmts = $mysqli->prepare('SELECT end_date FROM products WHERE pid = ?')) {
    $stmts->bind_param("i",$pid);
    $stmts->execute(); // Execute the prepared query.
    $stmts->bind_result($endDate); // get variables from result.
    $stmts->fetch();
    $stmts->close();

    $date = strtotime($endDate);
    $remaning = $date - time();
}
?>


我通过页面上的文本框接受出价金额,如下所示。

<form ...>  <!-- Form to submit bidding amount starts here -->
    <input type="text" placeholder = "Bid Price" name="bid_price" id="bid_price" title="Enter your Bid for auction" required />
    <input type="submit" class="sbmt"  name="bidsubmit" id="bidsubmit" value="Submit"/>
</form>     <!-- Form ends here -->


我该如何禁用ID为bid_price的文本框,或在剩余时间结束后将其隐藏,以使之后没有用户可以出价。

最佳答案

使用您提供的内容,我可以简单地建议使用条件确定日期是否在now之后,如下所示:

$date = DateTime('now');
$date->modify('+ 2 day');//testing negative

if ($date > DateTime('now')) {
    //show form
} else {
    //auction has ended
}


在上面的代码段中,如果将modify函数设置为- 1 days,则表单不会显示!是的

请注意,我已将运算符设置为>而不是>=,以便在将动作设置为结束时,表格不会准确显示。
另外要记住的是时区!但这对您的问题应该没有太大关系吗?

此外

作为包装爱好者,有一个名为Carbon的包装,我认为它真的很酷且易于使用。

if ($date->lt(Carbon::now()) {
}


它还具有日期格式和间隔格式的一些很酷的功能。在这种情况下,我建议使用diffForHumans方法,该方法会提供一些很酷的输出,例如2 days30 seconds ago。可能有一个方法或参数可以设置为Ends in 30 seconds time

http://carbon.nesbot.com/docs/

10-04 15:58