PHP您还要多久才能再次执行此操作
我有投票制度。 在一个人投票后,他将在12小时内无法投票 我想做的是,发出回声,告诉他什么时候可以再次投票 例如:PHP您还要多久才能再次执行此操作,php,sql,Php,Sql,我有投票制度。 在一个人投票后,他将在12小时内无法投票 我想做的是,发出回声,告诉他什么时候可以再次投票 例如: You will be able to vote in 11 hours, and 04 minutes 我的想法: 当用户完成操作时,我将发送一个包含所有详细信息的查询,然后将“下一次投票”列设置为: CURDATE() + 12 HOURS 然后执行next_vote减去date(),然后它会给我小时/分钟的时间,直到我可以再次投票 但问题是,我不知道我该怎么做,因此我需要
You will be able to vote in 11 hours, and 04 minutes
我的想法:
当用户完成操作时,我将发送一个包含所有详细信息的查询,然后将“下一次投票”列设置为:
CURDATE() + 12 HOURS
然后执行next_vote减去date(),然后它会给我小时/分钟的时间,直到我可以再次投票
但问题是,我不知道我该怎么做,因此我需要一些帮助
这是一个好方法&应该有效吗?我该怎么做
编辑::
public function getTimeLeft($ip)
{
$this->get = $this->pdo->prepare("SELECT DATE_FORMAT(TIMEDIFF(CURDATE(), 'nextVote')) FROM auths WHERE voter_ip = :ip");
$this->get->execute(array(":ip" => $ip));
}
public final function setNextVote($ip)
{
$this->insert = $this->pdo->prepare("UPDATE auths SET nextVote = CURDATE() + 12 HOURS WHERE voter_ip = :ip");
$this->insert->execute(array(":ip" => $ip));
}
$minutes = floor($vote->getTimeLeft($_SERVER['REMOTE_ADDR']) / 3600);
$hours = floor( ($vote->getTimeLeft($_SERVER['REMOTE_ADDR']) / 60) % 60);
用字段名“NextTime”(或其他任何名称)创建一个表,并将
CURDATE() + 12 HOURS
在那里
如果在此之前发生任何更新。。忽略它使用SQLs
比如:
选择日期\格式(TIMEDIFF(CURDATE(),'NameOfField')代码>
然后使用您最喜欢的服务器端语言将秒数转换为更好的值
e、 g.在PHP中:
$totalSeconds = /* get from query using PDO or mysqli */
$hours = floor($totalSeconds / 3600);
$minutes = floor(($totalSeconds / 60) % 60);
echo "You will be about to vote in $hours hours, and $minutes minutes.";
您可以使用MySQL获取两个日期之间的时间差,如下所示:
SELECT
TIMEDIFF('2013-05-12 10:00:00','2013-03-11 11:23:00') as total_time,
HOUR(TIMEDIFF('2013-05-12 10:00:00','2013-03-11 11:23:00')) as hour_dif,
MINUTE(TIMEDIFF('2013-05-12 10:00:00','2013-03-11 11:23:00')) as minute_dif
结果是这样的
total_time: 22:37:00
hour_dif: 22
minute_dif: 37
您可以使用当前日期字段替换日期示例:TIMEDIFF(date1,date2)是的,但我想回复如下内容:“您将能够在11小时04分钟后投票”使用PHP diff()函数从现在开始时间与“Nexttime”字段值如果您还不知道,您可以使用编辑器中的code
按钮缩进您的SQL、其他代码和输出示例。首次发布!对不起,如果它让你的眼睛流血的话。没那么糟糕!只需使用上面的edit
链接来调整它:)
致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1582在C:\xampp\htdocs\vote\includes\class\vote.class.php中调用本机函数“DATE_FORMAT”时参数计数不正确:174堆栈跟踪:#0 C:\xampp\htdocs\vote\includes\class\vote.class.php(174):PDOStatement->execute(Array)#1 C:\xampp\htdocs\vote\index.php(644):vote->getTimeLeft('127.0.0.1')#2{main}在第174行的C:\xampp\htdocs\vote\includes\class\vote.class.php中抛出