我正在试图弄清楚如何创建一个系统,用户每周回答一堆问题并获得正确答案。管理员将在一周后添加正确的答案,因此用户答案必须存储在数据库中。
appriciate会帮助如何使用php和mysql帮助这一点。谢谢!
答案 0 :(得分:1)
您需要几页:
1)问题页面:
在 questions.php 页面中,您可以在每个问题下都有一个表单,允许用户选中复选框:
<form action="answers_submitted.php" method="POST">
What is 1 + 5 equal to?<br>
<input type="radio" name="answer0" value="3"> 3
<input type="radio" name="answer0" value="6"> 6
<input type="radio" name="answer0" value="99"> 99 <br>
<input type="submit" value="Send Answers">
</form>
2)答案提交页面:
answers_submitted.php 页面必须在用户点击&#34;发送答案&#34; 后检索这些值。在检索答案后,将这些答案与正确的答案进行比较,以获得分数。例如,如果总共有4个问题:
<?php
//array containing the right answers
$array_of_answers = array(6,2,"food", 33, "books");
$score = 0;//this value will contain the score once all the code
//has been executed.
for ($i = 0; $i<4; $i++)
{
$string = 'answer'.$i;
if(isset($_POST[$string]))
{
if ($_POST[$string] == $array_of_answers[$i])
$score++;
}
}
?>
然后,该分数可以保存到数据库服务器,例如MySQL,然后在下周显示给用户。此代码也可以在 answers_submitted.php 页面上完成。以下是如何将信息发送到数据库的简化示例,但我建议您阅读有关此问题的完整教程:
$sql = "UPDATE users SET score = {$score} WHERE id = {$_SESSION['user_id']}";
$stmt = $conn->query($sql);
由于$score
值不是直接用户输入,并且由于在服务器上生成了$_SESSION['user_id']
值,因此在这种情况下不需要准备好的语句和绑定参数, THOUGH 在大多数情况下,需要这些来防止sql注入。有些程序员甚至在所有情况下都应用这些方法(即使不需要)只是为了使用它们,所以在制作自己的代码时请记住这一点!
答案 1 :(得分:1)
你可以设计如下:
有3张桌子
Users (id, username, password, is_admin)
Questions (id, question, points, creation_date)
Answers (id, answer, question_id, is_correct, user_id)
三个动作
i) add_question
ii) answer_question
iii) select_correct_answer
用户创建和身份验证并不是这个问题所特有的,这就是我没有谈论它的原因。
在上面列出的三个行动中,我将解释第三个行动,并假设其他两个行为是不言自明的:
***This action would take question_id as argument***
>> admin selects correct answer for a question (simply sets is_correct = 1)
>> all answers for that question are extracted from the db
>> each answer is compared with the answer supplied by admin
>> for each question that matches, the user that answered is extracted from the db and the point for that question is added to the user's total points.
希望这有帮助。
答案 2 :(得分:0)
MYSQL:
console.log
获取本周的答案。WEEK(created_at)=WEEK(NOW())
按用户分组。GROUP BY user_id
总的正确答案。COUNT(*)
在表格中找到正确的答案,以获得正确的答案。答案 3 :(得分:0)
你应该创建: