使用PHP和Javascript进行多重倒计时
我目前正陷入一个问题,不知道如何解决它。我是新的php和javascript编码,所以请纠正我,如果有一个更简单的方法来做到这一点 我的问题是,我正试图让一个倒计时计时器为mysql数据库中的多个数据工作。我已经制作了一个成功的倒计时函数,它在php中使用if语句只处理一个数据,但是当我尝试在php中使用while语句处理多个数据时,它不起作用使用PHP和Javascript进行多重倒计时,javascript,php,mysql,Javascript,Php,Mysql,我目前正陷入一个问题,不知道如何解决它。我是新的php和javascript编码,所以请纠正我,如果有一个更简单的方法来做到这一点 我的问题是,我正试图让一个倒计时计时器为mysql数据库中的多个数据工作。我已经制作了一个成功的倒计时函数,它在php中使用if语句只处理一个数据,但是当我尝试在php中使用while语句处理多个数据时,它不起作用 //TODAY'S DATE $today = time(); //FETCHES DATE AND TIME FOR THE EVENT FROM
//TODAY'S DATE
$today = time();
//FETCHES DATE AND TIME FOR THE EVENT FROM DATABASE
$sql = "SELECT * FROM post";
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($result)) {
$title = $row['title'];
$cname = $row['cname'];
$team = $row['team'];
$description = $row['description'];
$endtime = $row['endtime'];
echo "<tr>";
echo "<td width='16%'><strong>Title:</strong></td>";
echo "<td width='16%'>$title</td>";
echo "</tr><tr>";
echo "<td width='16%'><strong>Client name:</strong></td>";
echo "<td width='16%'>$cname</td>";
echo "</tr><tr>";
echo "<td width='16%'><strong>Team:</strong></td>";
echo "<td width='16%'>$team</td>";
echo "</tr><tr>";
echo "<td width='16%'><strong>Description:</strong></td>";
echo "<td width='16%'>$description</td>";
echo "</tr><tr>";
echo "<td width='16%'><strong>End time:</strong></td>";
echo "<td width='16%'>$endtime</td>";
echo "</tr><tr>";
echo"</BR>";
echo"</BR>";
}
$conn->close();
//今天的日期
$today=时间();
//从数据库中获取事件的日期和时间
$sql=“从帖子中选择*”;
$result=mysqli\u查询($conn,$sql);
while($row=mysqli\u fetch\u assoc($result)){
$title=$row['title'];
$cname=$row['cname'];
$team=$row['team'];
$description=$row['description'];
$endtime=$row['endtime'];
回声“;
回声“标题:”;
回音“$title”;
回声“;
echo“客户端名称:”;
回显“$cname”;
回声“;
回声“团队:”;
回声“$team”;
回声“;
回声“描述:”;
回显“$description”;
回声“;
回声“结束时间:”;
回显“$endtime”;
回声“;
回声“”;
回声“”;
}
$conn->close();
下面是我的javascript,它假设运行倒计时
<script language="JavaScript">
var today = new Date();
var DD = today.getDate();
var MM = today.getMonth()+1; //January is 0!
var YYYY = today.getFullYear();
//let get the Difference in Sec btw the two dates
var _DateFromDBProgEndDate = '<?php echo $endtime; ?>';
var ProgEndTime = new Date(_DateFromDBProgEndDate);
var TodayTime = new Date();
var differenceTravel = ProgEndTime.getTime()- TodayTime.getTime() ;
var seconds = Math.floor((differenceTravel) / (1000));
////////////////////////////////
var SecDiffFromToday = seconds;
var seconds = SecDiffFromToday;
function pad(n) {
// utility function to pad a number to 2 digits:
return ('0' + n).substr(-2);
}
function timer() {
var todaySeconds = Math.floor(new Date().getTime() / 1000);
// collect the html first in an array
var html = [];
// keep track whether there are still counters not yet zero:
var allDone = true;
// go through the list of dates:
endDatesInSeconds.forEach(function (endDateSeconds) {
var totalSeconds = endDateSeconds - todaySeconds;
var days = Math.floor(totalSeconds/24/60/60);
var seconds = Math.floor(totalSeconds - days*86400);
var hours = Math.floor(seconds/3600);
seconds = Math.floor(seconds - hours*3600);
var minutes = Math.floor(seconds/60);
seconds = seconds % 60;
// add a part of html
html.push(
totalSeconds <= 0
? 'project time Completed'
: days + ":" + pad(hours) + ":" + pad(minutes) + ":" + pad(seconds));
// when at least one counter is not complete, we are not done:
allDone = allDone && totalSeconds <= 0;
});
// now put the html in the document:
document.getElementById('countdown').innerHTML = html.join('<br/>');
if (allDone) {
clearInterval(countdownTimer);
}
}
var countdownTimer = setInterval('timer()', 1000);
</script>
var today=新日期();
var DD=today.getDate();
var MM=today.getMonth()+1//一月是零!
var YYYY=today.getFullYear();
//让我们看看这两个日期之间的差异
var_DateFromDBProgEndDate='';
var ProgEndTime=新日期(_DateFromDBProgEndDate);
var TodayTime=新日期();
var differenceTravel=ProgEndTime.getTime()-TodayTime.getTime();
var秒=数学地板((差程)/(1000));
////////////////////////////////
var secdiffromtoday=秒;
var seconds=SecDiffFromToday;
功能板(n){
//将数字填充到2位的实用功能:
返回('0'+n).substr(-2);
}
函数计时器(){
var todaySeconds=Math.floor(new Date().getTime()/1000);
//首先在数组中收集html
var html=[];
//跟踪是否还有尚未归零的计数器:
var allDone=true;
//浏览日期列表:
forEach(函数(endDateSeconds){
var totalSeconds=endDateSeconds-todaysonds;
变量天数=数学下限(总秒数/24/60/60);
var秒数=数学下限(总秒数-天*86400);
var小时=数学地板(秒/3600);
秒=数学地板(秒-小时*3600);
var分钟=数学地板(秒/60);
秒=秒%60;
//添加html的一部分
html.push(
totalSeconds如果您在脚本中使用同一个endtime,或者仅使用最后一个endtime,则可以每次复制脚本,或者创建js脚本,使endtime是一个参数,而不是由php硬编码,然后遍历每个endtime单元格并初始化一个新的timerSetTimeout,它需要一个函数而不是字符串。您将放在哪里将数据导入endDatesInSeconds
?上述任何一项都不能解决问题。请提供进一步帮助。请提前感谢您在脚本中使用相同的endtime,或者仅使用最后一个endtime,或者每次复制脚本,或者创建js脚本,使endtime是一个参数,而不是由php硬编码,然后重试rse每个结束时间单元格并初始化一个新的timerSetTimeout需要一个函数而不是字符串。您将数据放在哪里?上述所有操作都无法解决此问题。请提供进一步帮助。提前感谢