【问题标题】:How to select random row from MySql after countdown is done?倒计时完成后如何从MySql中选择随机行?
【发布时间】:2016-09-27 16:25:33
【问题描述】:

我这里有一个倒计时脚本

  <h2 id="countdown"></h2> 
<script>
  var CountDownTimer;

    CountDownTimer = function(dt, id) {
    var _day, _hour, _minute, _second, end, selector, showRemaining, timer;
    selector = document.getElementById(id);
    end = new Date(dt);
    _second = 1000;
    _minute = _second * 60;
    _hour = _minute * 60;
    _day = _hour * 24;
    showRemaining = function() {
        var days, distance, hours, minutes, now, seconds;
        now = new Date();
        distance = end - now;
        if (distance <= 0) {
            CountDownTimer("09/27/2016 20:00", "countdown");
            return;
        }
        days = Math.floor(distance / _day);
        hours = Math.floor((distance % _day) / _hour);
        minutes = Math.floor((distance % _hour) / _minute);
        seconds = Math.floor((distance % _minute) / _second);
        return selector.innerHTML = days + "days " + hours + "hrs " + minutes + "mins " + seconds + "secs";
    };
    return timer = setInterval(showRemaining, 1000);
    };

    CountDownTimer("09/27/2016 19:00", "countdown");
</script>

倒计时完成后,我希望查询从数据库中选择一个随机行并将倒计时重新开始到 +1 小时。 1 小时后,我希望这种情况再次发生。

这是应该选择随机行的代码,如果可能的话,这是我希望在倒计时脚本中执行的代码。

<?php $sql = "SELECT * FROM users ORDER BY RAND() LIMIT 1"; $result1 = $conn->query($sql);?>

这是最后一个代码的结果代码

<?php
if ($result1->num_rows > 0) {
    // output data of each row
    while($row = $result1->fetch_assoc()) {
        echo $row["username"];
    }
} ?>

此代码现在可以工作,但问题是每次我刷新页面时,都会选择一个新的随机行。我想要的是每小时选择一个新的随机行。

【问题讨论】:

    标签: php mysql database countdown


    【解决方案1】:

    当您生成随机数时,使用两个变量存储在会话中,一个用于存储数字,另一个用于过期时间。

    每当用户访问您的页面时,后端将检查会话变量中是否设置了值,如果没有,则保存新值,否则它将获取数字并检查时间。如果时间到期,则应生成新值。

    【讨论】:

    • 你有例子吗?
    【解决方案2】:

    只需将所选用户的 ID 存储在某个附加表中即可。

    例如在 user_of_hour(小时,user_id)中。

    然后检查:

    • 如果已经存储了一个小时的用户,那么只需通过 id 获取它
    • 如果没有,则继续随机选择

    小建议:

    不要使用 ORDER BY RAND() - 它在大数据集上非常慢。

    【讨论】:

      猜你喜欢
      • 2018-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      相关资源
      最近更新 更多