我正在尝试在时间到期时为所有用户创建通知。
我已经创建了一个条件,如果天数、小时数和分钟数变为0(零),则应触发模态和setInterval
。
然而,它并没有对我当前的代码做任何事情。另一方面,模态没有自动显示,我仍然需要刷新页面,它也没有更新。有没有办法做到这一点?
查看方式:
<form action="<?php echo base_url(); ?>submissions/lock" id="btnexp" method="post">
<input type="hidden" value="<?php echo $period['period_id']; ?>" name="period_id">
<?php if($period['duration']!='0000-00-00 00:00:00'): ?>
<?php
date_default_timezone_set('Asia/Manila');
$datetime = date("Y-m-d H:i:s");
$date1 = new DateTime($datetime);
$date2 = new DateTime($period['duration']);
$interval = $date1->diff($date2);
$days = $interval->days;
$hours = $interval->h;
$min = $interval->i;
// echo $interval->format("%Y-%m-%d %H:%i:%s").'<br>';
// shows the total amount of days (not divided into years, months and days like above)
$interval->days;
$interval->h;
$interval->i;
if($days == 0 && $hours == 0 && $min == 0){
?>
<script>
$(function(){
//function
setInterval(function(){
$.ajax({
type: 'POST',
url: '<?php echo base_url() ?>submissions/lock',
async:false,
cache: false,
success: function(data){
if (data == 0){
$('#myModal').modal('show');
}
},
error: function(){
alert('Could not get Data from Database');
}
});
}, 1000);
});
</script>
<?php } ?>
<?php endif; ?>
</form>
控制器:提交/锁定
public function lock()
{
$this->submission_model->lock();
}
1条答案
按热度按时间vawmfj5a1#
您应该使用javascript来完成此操作。
setInterval
在javascript中,它是每毫秒运行一次,但它只适用于javascript代码,而不是php。PHP是服务器端,JS是客户端。
也许它会为你工作。使用momentjs来获得时差。
并使用
setInterval
函数设置获取每秒运行的时间差如果条件为真,则运行 AJAX 并打开模态。