使用php和mysql的每个答案点数

时间:2016-05-25 07:21:13

标签: php mysql phpmyadmin

我正在试图弄清楚如何创建一个系统,用户每周回答一堆问题并获得正确答案。管理员将在一周后添加正确的答案,因此用户答案必须存储在数据库中。

appriciate会帮助如何使用php和mysql帮助这一点。谢谢!

4 个答案:

答案 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

用户创建和身份验证并不是这个问题所特有的,这就是我没有谈论它的原因。

在上面列出的三个行动中,我将解释第三个行动,并假设其他两个行为是不言自明的:

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:

  1. 您可以使用console.log获取本周的答案。
  2. WEEK(created_at)=WEEK(NOW())按用户分组。
  3. GROUP BY user_id总的正确答案。
  4. COUNT(*)在表格中找到正确的答案,以获得正确的答案。

答案 3 :(得分:0)

你应该创建:

  1. questions.php页面包含HTML(用户回答的地方) 问题)
  2. MySQL数据库(用户名,answer1,answer2 ......)     (在数据库中插入答案)
  3. admin.php(管理员可以更正     答复)