2016-09-27 21 views
0

我這裏有一個倒計時腳本如何在倒計時完成後從MySql中選擇隨機行?

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

此代碼現在工作,但問題是,我每次刷新頁面的時候,一個新的隨機行選擇結果的代碼。我想要的是每小時一個新的隨機行被選中。

回答

0

當您生成隨機數時,使用兩個變量存儲會話,一個用於存儲數字,另一個用於存儲到期時間。

每當用戶訪問您的頁面時,在後臺會檢查是否在會話變量中設置了值,如果不是,則會保存新值,否則會提取數字並檢查時間。如果時間到期,應該生成新的值。

+0

你有一個例子嗎? – JayJay

+0

<?php session_start(); } else { //代碼來生成新的數字..並將其存儲在會話變量使用 $ _SESSION ['random_number'] = your_variable; } –

0

只需在某個附加表中存儲選定用戶的ID。

例如在user_of_hour(hour,user_id)中。

並檢查:

  • 如果已經存儲,然後一個小時的用戶只要得到它的ID
  • 如果沒有則進入隨機選擇

小編建議:

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