Intereting Posts
Laravel Красноречивое гнездование PHP eregi () – это устаревшее обнаружение браузера Как получить ошибки отображения на PHP? (Я добавил ini_set и error_reporting, но просто дает 500 ошибок) Как отправить переменную в php из javascript и вернуть результат обратно в JS Как разрешить определенные теги html? Массив поиска PHP в массиве Можно ли указать динамический тип, возвращаемый в PhpStorm? Настройка php-функции так, чтобы она отображала ссылку в виде: – '/ widgets? Pg = 2' вместо 'products.php? Cat = 20 & pg = 2' Ошибка session_start из-за отсутствия разрешений Возможно ли расширить функцию вызова функции в строке PHP? Нотация доллара в языках скриптов – почему? время, прошедшее с логикой паузы mysql TIMEDIFF () и PHP Проблема с использованием $ _POST с текстовым полем Amazon MarketplaceWebServiceOrders запрашивает внезапное сбои, PHP curl дает SSL CA cert error? PHP mySQL – вставить новую запись в таблицу с автоматическим приращением на первичный ключ

Проверка правильной формы ответа и отправки

Я, по общему признанию, не настолько квалифицирован на 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-адрес?

Не передавайте счетчик ответов в ссылке (например, 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> 

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

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

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