Я строю викторину на PHP, в которой пользователю задают вопросы, на которые пользователь должен ответить ему ровно через 15 минут. В течение этих 15 минут этот вопрос будет отображаться как «взятый» для всех других пользователей. Если пользователь не сможет решить проблему через 15 минут, этот вопрос снова станет доступен для всех пользователей.Выполнение викторины на основе таймера в php
Я построить структуру БД как:
tbl_Question
pkQuestionId
question
tbl_UserQuestion
pkUserQuestionId
fkQuestionId
fkUserId
timeStamp
tbl_User
pkUserId
Подход, который я попробовал, чтобы вставить запись в tbl_UserQuestion
, если пользователь хочет, чтобы ее решить, с отметкой времени. Затем задайте все вопросы от tbl_Question
, которые не находятся в tbl_UserQuestion
.
Я зациклился на том, как показывать вопросы другим пользователям, если первоначальный пользователь не смог его решить за 15 минут.
Я застрял в запросе, какой запрос мне нужен, чтобы представить вопрос всем другим пользователям, если запись конкретного вопроса уже присутствует в tbl_UserQuestion. Еще одна вещь, как я могу автоматически обновить отметку времени? Я не хочу использовать cron job – jalabi
что-то вроде 'SELECT FROM tbl_Question AS Q LEFT OUTER JOIN tbl_UserQuestion AS UQ на UQ.fkQuestionId = Q.pkQuestionId WHERE UQ.fkQuestionId ИМЕЕТ NULL ИЛИ НЕ СУЩЕСТВУЕТ (SELECT UQ2.fkQuestionId FROM tbl_UserQuestion AS UQ2 WHERE fariff (mi, GETDATE(), UQ2.timeStamp) <15 ИЛИ UQ2.answered = 1' Я не уверен, что синтаксис идеально подходит для этого, поскольку я набрал его там, но в основном вы просто хотите устранить вещи с помощью ответа = 1 или в течение 15 минут. Что касается обновления временной отметки, я не уверен, что вы имеете в виду, почему бы вам ее обновить? – Nived