簡體   English   中英

倒數完成后如何從MySql中選擇隨機行?

[英]How to select random row from MySql after countdown is done?

我這里有倒計時腳本

  <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"];
    }
} ?>

現在此代碼有效,但問題是每次我刷新頁面時,都會選擇一個新的隨機行。 我想要的是每小時選擇一個新的隨機行。

當您生成隨機數時,請使用兩個變量在會話中進行存儲,一個用於存儲數字,另一個用於過期。

每當用戶訪問您的頁面時,都會在后端檢查是否在會話變量中設置了值,否則將保存新值,否則將獲取編號和檢查時間。 如果時間到期,則應生成新值。

只需將所選用戶的ID存儲在其他表中即可。

例如,以user_of_hour(小時,user_id)為單位。

並檢查:

  • 如果已經存儲了一個小時的用戶,則只需按ID即可獲取
  • 如果沒有,則繼續進行隨機選擇

小建議:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM