0

所以我目前正在为我的学校项目使用在线选举系统,我很难设置选举的开始和结束时间。我有一个用于开始时间和结束时间的日期/时间选择器,然后我希望 dtpicker 的值保存在我的数据库中,我想根据我的数据库上的时间进行倒计时,如果选举开始,它将显示投票页面,如果选举结束,它将重定向到结果。我怎样才能做到这一点。我有很多线程,但它们并没有解决我的问题。请你帮助我好吗?您有任何想法或建议与我的问题相关的网站吗?我在这个问题上停留了 3 天。任何帮助将不胜感激。

- -更新 - -

所以这是我的代码如下:

 <?php
 $con = mysql_connect("localhost","root","vertrigo");
 if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }

 mysql_select_db("db_voting", $con);

 $result = mysql_query("SELECT * FROM time WHERE time_ID = 1");

 $numrow = mysql_num_rows($result);

 if ($numrow == 0)
 {
die('No election found.');
 }

 $row = mysql_fetch_row($result);
 $startdate = date_format(date_create($row[1]), 'm/d/Y H:i:s');
 echo "Voting will start: " . $startdate. "<br />";

 $closedate = date_format(date_create($row[2]), 'm/d/Y H:i:s');
 echo "Voting will end: " . $closedate;
 ?>
<p>Time Left:
<script language="JavaScript">
TargetDate = "<?php echo $closedate ?>";
BackColor = "palegreen";
ForeColor = "navy";
CountActive = true;
CountStepper = -1;
LeadingZero = true;
DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
FinishMessage = "Voting has Ended";
</script>
<script language="JavaScript" src="countdown.js"></script>

so what i am trying to do is whenever the election ends it will redirect to result if not then it will display the voting page. 我应该使用 if else 语句吗?我很抱歉,我仍然是一个菜鸟。你能帮帮我吗?

4

2 回答 2

1

有很多方法可以做到这一点。

您面临的部分问题是 Mysql 和 PHP 可以处理不同的时间格式。如果您在 MYSQL 中以日期格式存储日期,它将采用 YYYY-MM-DD 格式,而 PHP 日期对象使用 UNIX 时间戳(自 1970 年 1 月 1 日午夜起经过的秒数)。您可以将数据库中的时间戳保存为整数,但我通常保存为 MYSQL 格式,然后使用 php strtotime 命令处理我的 php 代码中的日期。这会将 mysql 本机格式转换为时间戳。

http://php.net/manual/en/function.strtotime.php

一旦日期采用这种格式,您只需将当前日期转换为时间戳,然后从另一个中减去一个以进行倒计时。您可以划分以将其从几秒变为几天或其他任何时间。

在将时间戳转回日期方面,您可以使用此功能。

http://php.net/manual/en/function.date.php

使用时间戳时的最后一个警告,javascript 和 PHP 以不同的方式处理它们。Javascript(如果您的项目中有的话)以毫秒为单位工作,而 php 以秒为单位。

只是一个想法,但可能有很多方法可以做到这一点。

于 2012-08-26T14:29:42.760 回答
0

根据我的经验,比较时间的可靠方法是使用 Unix 时间格式。设置您的 if 以比较 Unix 时间格式并查看它是否有效。记得设置默认时区!

而且,您尝试过的示例肯定会有所帮助。

于 2012-08-26T14:18:44.727 回答