首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >阻止用户提交24小时,并显示区块上剩余的小时数

阻止用户提交24小时,并显示区块上剩余的小时数
EN

Stack Overflow用户
提问于 2011-08-26 02:13:14
回答 1查看 89关注 0票数 0

在下面的代码中,datesubmitted是一个时间戳。如果给定的$uid在24小时内提交,我希望他们不能提交,并看到一条消息,显示他们可以再次提交的时间。

下面的代码似乎至少在前几个小时是有效的(它在第一个小时显示24,然后在第二个小时显示23 )。但当我今天检查时,预计消息还剩4-6个小时,消息根本不在那里。

我的代码有什么问题吗?

代码语言:javascript
运行
复制
$queryuidcount = "select loginid from submission where TO_DAYS(datesubmitted) = TO_DAYS(NOW()) AND loginid = '$uid'"; 
$uidresult = mysql_query($queryuidcount);

if (mysql_num_rows($uidresult) >= 1) {
    $queryuidhours = "select loginid, 24 - HOUR(TIMEDIFF(NOW(), datesubmitted)) as hours from submission where loginid = '$uid' ORDER BY hours DESC"; 
    $hourresult = mysql_query($queryuidhours);
    $hourcount = 1;
    while($row = mysql_fetch_array($hourresult)) {
        echo '<div class="submittitle">You will not be able to submit again for '.$row["hours"].' hours.</div>';
        break;
        $hourcount++;
    }
    mysql_free_result($hourresult);
} else {
EN

回答 1

Stack Overflow用户

发布于 2011-08-26 02:20:28

第一个SQL查询的目的是什么?一旦午夜过去,它将不返回任何内容,即使在午夜前几分钟发生了提交。

(在第一次迭代中无条件中断的while循环是怎么回事?)

另外:你的查询看起来对数据库不必要的苛刻。如果从计算截止时间戳"24小时前“开始,然后简单地选择比这更新的行,效率可能会高得多。一旦你得到一个行(如果你得到了),你就可以计算出在PHP端还剩下多长时间。(或者甚至只是检索最近的提交时间,然后在数据库之外执行整个禁运计算)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7195205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档