我有一个已经调用SQL数据库的页面,我想根据其中一个条目的条件显示div。我不能让这个为我工作,我很难找到正确的答案。
如果数据库上的到期日期列条目是一个月之后,我想要一个名为#expiryDate
的Div显示JavaScript。
我可以使用<?php echo $data["expires"]; ?>
显示数据库条目
但是我想做这样的事情......
<script type="text/javascript">
$function() {
var subval;
subval = $data["expires"];
if(..........) {
$('#expiryDate').show();
} else {
$('#expiryDate').hide();
}
}};
</script>
但我无法理解if位。我想要它
如果$date["expires"]
中的日期是一个月之后,那么....
我错过了什么?
答案 0 :(得分:2)
演示:http://jsfiddle.net/Lts1rg18/
假设$data["expires"]
是日期字符串;
var expDate = new Date(<?php echo "$data['expires']"; ?>);
var now = new Date();
var oneMonthFromNow = new Date(now.getFullYear(), now.getMonth() + 1, now.getDate());
if(expDate <= oneMonthFromNow) {
$('#expiryDate').show();
} else {
$('#expiryDate').hide();
}
答案 1 :(得分:1)
如果可能,请在PHP中执行计算,以避免对客户端浏览器施加压力。
我喜欢Sebbzzz的答案但是,个人偏好看到我的时间计算发生在时间戳中,所以:
<?php
$strExpiryTimestamp = strtotime($date["expires"]);
/* For mockup purposes */
$intMonth = 1; /* date('n') Gets this month */
$intYear = 2014; /* date('Y') Gets this year */
$intStartOfMonth = mktime(0, 0, 0, $intMonth, 1, $intYear);
if($strExpiryTimestamp < $intStartOfMonth) {
$strOp = 'show';
} else {
$strOp = 'hide';
}
?>
<html>
<body>
<h1>Your HTML</h1>
<script>
$(document).ready(function () {
$('#expiryDate').<?php echo $strOp; ?>();
});
</script>
</body>
</html>
使用上述方法,您可以清楚地看到计算是在#34;顶部&#34;在服务器上,只要$ strOp可用作变量,脚本部分就可以包含在任何地方。
如果您想了解更多有关日期的信息,请查看PHP手册页here
答案 2 :(得分:1)
我建议您在项目中添加moment.js并尝试以下内容:
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" src="js/moment.js"></script>
</head>
然后是以下jQuery:
$(document).ready(function () {
expiryDate();
});
function expiryDate() {
var dbDate = $data["expires"];
var expDate = moment(dbDate).format();
var curDate = moment().format();
var oneb4 = moment(expDate).subtract(1, 'months').format();
if (curDate > oneb4) {
$('#expiryDate').show();
} else {
$('#expiryDate').hide();
}
}