PHP和MYSQL在设计这个游戏时遇到的问题

PHP和MYSQL在设计这个游戏时遇到的问题,php,forms,Php,Forms,***我对PHP非常陌生,尽可能地学习,我们只学习了两周的PHP语言。请对我耐心点。这是一个在本地主机上的Xampp上运行的文件**** 我正在设计一个问答游戏,其中用户有一个下拉框来选择等级,然后另一个下拉框来选择他们想要从中选择的类别,然后他们单击提交。我有一个数据库,其中有3个表(年级、类别和一个包含100个问题列表的问题表)。如果等级=1,类别=1,则返回5个一级语言问题 我的问题是,我希望能够在同一页上完成所有这些处理,但我不确定这是否可行。我的代码也很长,因为我们学习PHP的时间不长

***我对PHP非常陌生,尽可能地学习,我们只学习了两周的PHP语言。请对我耐心点。这是一个在本地主机上的Xampp上运行的文件****

我正在设计一个问答游戏,其中用户有一个下拉框来选择等级,然后另一个下拉框来选择他们想要从中选择的类别,然后他们单击提交。我有一个数据库,其中有3个表(年级、类别和一个包含100个问题列表的问题表)。如果等级=1,类别=1,则返回5个一级语言问题

我的问题是,我希望能够在同一页上完成所有这些处理,但我不确定这是否可行。我的代码也很长,因为我们学习PHP的时间不长。该页面将返回问题,但我很难让它验证用户输入的5个答案框,它们对应于从数据库中提取的正确答案。正确/不正确循环的输出也会在用户输入答案并点击提交之前显示。我也有一个记分表来记录胜负。是否可以在一个PHP页面上完成所有这些操作? 我有两个表格,一个是关于问题的,另一个是关于答案的

我可以将一些代码粘贴到部分,但不能全部粘贴,因为它确实很长。再次,我在C++方面很好,但是还没有学到很多关于PHP的知识。p>

您的答案:
1)

2)

3)

4)

5)


正确答案:
(一)

(二)

(三)

(四)

(五)


如果我理解正确,首先要收集输入,然后显示正确答案。 一个可能的代码可能是这个

<?php
   $numInputs = 5;
   $i =1;
   $inputs= array();
   $valid=true;
   while($i <= $numInputs && $valid == true){
      $str = "input".$i;
      if(isset($_POST[$str]) && !preg_match("/^\s+$/", $_POST[$str])) $inputs[] = $_POST[$str];
      else $valid = false;
      $i++;
   }
   if($valid === true && sizeof($inputs) > 0){
      $answer1 = getQueryAns($category, $grade, $quesID1);
      checkAnswers($inputs[0], $answer1, $total_win, $total_loss);
      $answer2 = getQueryAns($category, $grade, $quesID2);
      checkAnswers($inputs[1], $answer2, $total_win, $total_loss);
      $answer3 = getQueryAns($category, $grade, $quesID3);
      checkAnswers($inputs[2], $answer3, $total_win, $total_loss);
      $answer4 = getQueryAns($category, $grade, $quesID4);
      checkAnswers($inputs[3], $answer4, $total_win, $total_loss);
      $answer5 = getQueryAns($category, $grade, $quesID5);
      checkAnswers($inputs[4], $answer5, $total_win, $total_loss); ?>
      Correct Answers:<br>
      <p>1) <?=$answer1;?> </p>
      <p>2) <?=$answer2;?> </p>
      <p>3) <?=$answer3;?></p>
      <p>4) <?=$answer4;?></p>
      <p>5) <?=$answer5;?></p>
   <?php }else{ ?>
         <form method = "post">
            Your Answers:<br>
            1) <input type="text" name="input1"><br><br>
            2) <input type="text" name="input2"><br><br>
            3) <input type="text" name="input3"><br><br>
            4) <input type="text" name="input4"><br><br>
            5) <input type="text" name="input5"><br><br>
            <input type="submit" value="Check" id="check_answ"><br>
         </form>       
   <?php  } 

    function checkAnswers($input, $CorrAnswer, &$total_win, &$total_loss){
     if($input == $CorrAnswer){
        echo nl2br("Correct!\n");
        $total_win++;
     }
     else{
        echo nl2br("Incorrect!\n");
        $total_loss++;
     }
   }
   function getQueryAns($category, $grade, $quesID){
      return $con->query("select answer from questions where catID = '$category' and gradeID = '$grade' and quesID = '$quesID'")->fetch_assoc()["answer"];
    }
?>

正确答案:
(一)

(二)

(三)

(四)

(五)

您的答案:
1)

2)

3)

4)

5)



是的,我想让某人选择两个下拉选项,点击提交,然后在同一页返回5个问题。然后有5个答案框,他们输入答案,然后单击提交,它会再次返回到显示正确答案和分数的同一页面。我使用了你给我的答案,我必须将$con传递到函数中,它不断给出错误。无论如何,它现在不会在用户点击提交后显示答案,即使所有答案都已填写。此外,我仍然得到一个错误,它检查输入与正确的答案。我尝试了很多其他方法来让它工作。是的,我忘了在getQueryAns中添加$con,它会给你带来什么错误?在我执行connect变量之前,它会给出错误。它仍然不会根据sql查询的正确答案检查输入。我必须弄清楚那部分。