Как выбрать случайную строку из 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

Другие решения

Просто сохраните идентификатор выбранного пользователя в дополнительной таблице.

Например, в user_of_hour (час, user_id).

И проверьте:

  • если пользователь часа уже сохранен, тогда просто получите его по id
  • если нет, то перейти к случайному выбору

Небольшой совет:

Не используйте ORDER BY RAND () — это очень медленно для больших наборов данных.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector