我正在用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 days
,30 seconds ago
。可能有一个方法或参数可以设置为Ends in 30 seconds time
http://carbon.nesbot.com/docs/