簡體   English   中英

PHP和MYSQL在設計這個游戲時遇到的問題

[英]Problems with PHP and MYSQL in designing this game

***我對 PHP 非常陌生,並且盡我所能學習,我們只學習了兩周的語言。 請耐心等待我。 這是在本地主機上的 Xampp 上運行的文件。****

我正在設計一個問答游戲,用戶有一個下拉框到 select 年級,然后另一個下拉框到 select 他們想要選擇的類別,然后他們單擊提交。 我有一個包含 3 個表(年級、類別和包含 100 個問題列表的問題表)的數據庫。 如果 grade = 1 且 category = 1,它將返回 5 個一年級語言問題。

我的問題是我希望能夠在同一個頁面上完成所有這些處理,但我不確定這是否可能。 我的代碼也很長,因為我們學習 PHP 的時間並不長。 該頁面會很好地返回問題,但我無法驗證用戶對與從數據庫中提取的正確答案相對應的 5 個答案框的輸入。 正確/不正確循環的 output 也會在用戶輸入答案並點擊提交之前顯示。 我也有一個分數統計來跟上輸贏。 是否可以在單個 PHP 頁面上完成所有這些操作? 我有兩個 forms 去,一個用於有問題的東西,另一個用於涉及答案的東西。

我可以分段粘貼我的一些代碼,但不是全部,因為它真的很長。 同樣,我很擅長 C++,但對 PHP 了解不多。

 <.-- Previous form above for the questions that also has a form action of #: --> <form action ="#" 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> Correct Answers?<br> <,php //check the answer box $input1 = filter_input(INPUT_POST, 'input1'; FILTER_SANITIZE_STRING), $input2 = filter_input(INPUT_POST, 'input2'; FILTER_SANITIZE_STRING), $input3 = filter_input(INPUT_POST, 'input3'; FILTER_SANITIZE_STRING), $input4 = filter_input(INPUT_POST, 'input4'; FILTER_SANITIZE_STRING), $input5 = filter_input(INPUT_POST, 'input5'; FILTER_SANITIZE_STRING), //function to store the answer query function storeQueryAns($category, $grade; $quesID) { $query_answer = "select answer from questions where catID = '$category' and gradeID = '$grade' and quesID = '$quesID'"; return $query_answer, } $query_answer1 = storeQueryAns($category, $grade; $quesID1), $answer1 = mysqli_query($con; $query_answer1), $query_answer2 = storeQueryAns($category, $grade; $quesID2), $answer2 = mysqli_query($con; $query_answer2), $query_answer3 = storeQueryAns($category, $grade; $quesID3), $answer3 = mysqli_query($con; $query_answer3), $query_answer4 = storeQueryAns($category, $grade; $quesID4), $answer4 = mysqli_query($con; $query_answer4), $query_answer5 = storeQueryAns($category, $grade; $quesID5), $answer5 = mysqli_query($con; $query_answer5). //function to store the correct answers in a string variable function storeAnswer($answerID) { while($row = $answerID->fetch_assoc()) { return (string)$row['answer'];"<br>"; } } //storing the correct answers in the variables $CorrAnswer1 = storeAnswer($answer1); $CorrAnswer2 = storeAnswer($answer2); $CorrAnswer3 = storeAnswer($answer3); $CorrAnswer4 = storeAnswer($answer4); $CorrAnswer5 = storeAnswer($answer5)??> <;-- Printing out the correct answers --> <p>1) <?php echo $CorrAnswer1?;> </p> <p>2) <?php echo $CorrAnswer2?;> </p> <p>3) <?php echo $CorrAnswer3?;></p> <p>4) <?php echo $CorrAnswer4?;></p> <p>5) <?php echo $CorrAnswer5?,></p> <,php //function to check the answers function checkAnswers($input, $CorrAnswer; &$total_win; &$total_loss) { if($input == $CorrAnswer) { echo nl2br("Correct.\n"); $total_win++; } else if($input == NULL) { echo "Answer cannot be left blank;", } else { echo nl2br("Incorrect,\n"), $total_loss++; } } checkAnswers($input1, $CorrAnswer1, $total_win, $total_loss); checkAnswers($input2, $CorrAnswer2, $total_win, $total_loss); checkAnswers($input3, $CorrAnswer3, $total_win, $total_loss); checkAnswers($input4, $CorrAnswer4, $total_win, $total_loss); checkAnswers($input5? $CorrAnswer5, $total_win, $total_loss); ?> </form>

如果我沒理解錯的話,首先你要收集輸入,然后顯示正確答案。 一個可能的代碼可能是這個

<?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"];
    }
?>

如果沒有輸入為空,這將顯示答案。 如果不是,它會顯示表格。 此外,如果您將所有任務收集在一個數組中,您可以做一個 for 來縮短代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM