Сравнить строки с объектом? или сначала преобразовать объект в строку? - PullRequest
0 голосов
/ 16 апреля 2020

Я очень, очень новый. 2 недели PHP так что, пожалуйста, прости меня.

Хорошо, у нас есть проект, в котором пользователи используют раскрывающийся список, чтобы выбрать уровень оценки и категорию для ответов на вопросы. Это идет в мою базу данных и возвращает вопросы, соответствующие этим параметрам. Затем пользователь имеет 5 полей ввода для ответа на вопросы, и сервер должен проверить, совпадает ли строка ввода пользователя с той, которая хранится в базе данных, как правильный ответ. Я заработал, когда вопросы отправляются обратно в форму, и пользователю показываются правильные ответы.

Моя проблема в том, что я не знаю, как сделать сравнение между вводом пользователя и правильным ответ. Я продолжаю получать «неправильное» утверждение, когда проверяю его, набирая правильный ответ. Я пытался провести базовое сравнение c (если $ input == $ CorrAnswer) и другие типы вещей, которые я пробовал. Я разместил код, начиная с ответов, но я могу опубликовать весь файл, если это необходимо.

Я также безуспешно пытался преобразовать правильный объект ответа в строку. Я знаю, что запрос AQL работает, потому что я могу повторить правильный ответ, и он отображается очень хорошо.

Спасибо, что проявили терпение ко мне и потратили на это время. Я знаю, что это очень элементарно, но я все еще учусь.

Кроме того, если это не может быть отображено на одной странице php, пожалуйста, дайте мне знать.

<?php
    //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);?>
   
   Correct Answers:<br>
 <!-- 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>


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

   
   <?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 check the answers 
   function checkAnswers($input, $CorrAnswer, &$total_win, &$total_loss)
   {
	  if(strcasecmp($input, $CorrAnswer) == 0))
	  {
		  echo nl2br("Correct!\n");
		  $total_win++;
	  }
	  
	  else if(strcasecmp($input, $CorrAnswer) != 0)
	  {
		  echo nl2br("Incorrect!\n");
		  $total_loss++;
	  }
   }
   
   
$value = true;
if(empty($input1))
{
	$value = false;
	echo "Cannot leave answers blank.";
}
	
   //if answers are not left blank
   if($value == true)
   {
     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>


<br>

Score:<br>
  <label for "win">Wins:</label>
  <input type="text" disabled value=<?php echo $total_win; ?>
  
  <label for "loss">Losses:</label>
  <input type=text" disabled value=<?php echo $total_loss; ?>
</div>
 </body>
 </html>

Макет изображения страницы игры

...