Проверка правильного ответа и отправка формы - PullRequest
1 голос
/ 25 января 2010

По общему признанию, я не настолько опытен в PHP, как хотелось бы. Большая часть моего опыта связана с циклами Wordpress.

Я пытаюсь создать очень простой тест, который содержит количество правильных ответов в URL (например, domaindotcom /? P = 3, если у них есть 3 правильных ответа).

Я использую следующий код PHP, чтобы запустить его:

<?php 
    /* Gets current correct answer Count */ 
    $answer_count = $_GET["p"]; 

    /* checks to see if the submitted answer is the same as the correct answer */
    if ($_POST["submitted-answer"] == "correct-answer") {
        $answer_count++;
    }
?>

Теперь я знаю, что могу получить правильную ссылку, используя ссылку:

<a href="link-to-next-question.php/?p=<?php echo $answer_count; ?>">Next Question</a>

Но сейчас я пытаюсь использовать его в форме и путать с POST, GET и т. Д.

Вот мой HTML:

<form name="quiz" action="" method="POST">
<label for="o1"><input type="radio" name="grp" id="o1" value="o1"> Label 1</label>
<label for="o2"><input type="radio" name="grp" id="o2" value="o2"> Label 2</label>
<label for="o3"><input type="radio" name="grp" id="o3" value="o3"> Label 3</label>
<input type="submit" value="Next Question" class="btn">
</form>

Как я могу выбрать правильный ответ (безопасность не важна, это просто забавная викторина), а затем отправить их по следующему URL-адресу, добавив приращение к $ answer_count перед созданием URL-адреса?

Ответы [ 3 ]

1 голос
/ 25 января 2010

Используйте поле данных type = "hidden" для отправки текущего счета.

1 голос
/ 25 января 2010

Не передавайте количество ответов в ссылке (т. Е. По GET). Вместо этого просто включите скрытое поле (поля) формы и используйте код JavaScript на стороне клиента для увеличения переменных, которые вы хотите, и отправки формы.

<form id="qfrm" name="quiz" action="" method="POST"> 
  <input type="hidden" name="question_number" value="<?php echo $next_question_number?>">
  <input type="hidden" id="n_c_a" name="num_correct_answers" value=<?php echo $num_correct_answers?>">
  <input type="button" value="Submit" onclick="validateAnswerAndSubmit(); return false;">
</form>

<script language="javascript">
  function validateAnswerAndSubmit(){
    if(validate_answer()){
      document.getElementById("n_c_a").value += 1;
    }
    document.getElementById("qfrm").submit();
  }  
</script>

Тогда просто включите ваш php скрипт $_POST["question_number"]


ОК, так что вы не хотите использовать javascript ... если вы действительно спрашиваете, "как я узнаю, какой радиоблок был выбран из PHP?" ответ:

<?php $answer = $_POST["grp"]; ?>

Я думаю, что вы действительно должны передать две переменные в URL, одна из которых будет question_number, а другая num_correct. Затем вы можете написать код, подобный этому:

<?php

$num_correct = (int) $_GET["num_correct"];
$question_number = (int) $_GET["question_number"];

switch($question_number - 1){ // assuming your question numbers are in order by convention
                              // validate the answer to the previous question
  case -1: //no validation necessary for the first question ($question_number 0)    
    break;
  case 0: 
    if($_POST["grp"] == "correct answer"){
      $num_correct++;
    }
    break;

   // and so forth;         
}       
?>

<form name="quiz" 
      action="this_page.php/?num_correct=<?php echo $num_correct;?>&question_number=<?php echo $question_number + 1?>" 
      method="POST">

<?php Display_Question_Number($question_number);?>

</form>

Ключевым моментом здесь является то, что «действие =» в форме аналогично «href =» в привязке, т. Е. Это URL-адрес, на который отправляется форма, когда пользователь нажимает кнопку отправки.

0 голосов
/ 25 января 2010

Вы можете установить количество правильных ответов в $_SESSION (это глобальная переменная, которая сохраняется между страницами), поэтому ее сложнее обмануть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...