Tuve que crear un cuestionario para un cliente hace un tiempo. Unas pocas preguntas de opción múltiple, botón de enviar, y califica el cuestionario y le dice cómo lo hizo. Es un PHP un poco tonto y realmente muy simple, pero creo que podría ser un buen comienzo para algunas personas y una buena introducción a la teoría básica de crear un formulario en HTML y tratar los datos en otra página con PHP.
Ver demostración Descargar archivos
Las preguntas del cuestionario están envueltas en un formulario:
<form action="grade.php" method="post" id="quiz">
... questions here ...
</form>
Los formularios suelen tener botones de envío, y este no es una excepción. Cuando se hace clic en ese botón de envío, se “PUBLICARÁN” los datos de cada entrada dentro del formulario en la URL de “acción” proporcionada.
Los cuestionarios son esencialmente listas de preguntas, por lo que una lista ordenada servirá, por lo que una pregunta individual se verá así:
<li>
<h3>CSS Stands for...</h3>
<div>
<input type="radio" name="question-1-answers" id="question-1-answers-A" value="A" />
<label for="question-1-answers-A">A) Computer Styled Sections </label>
</div>
<div>
<input type="radio" name="question-1-answers" id="question-1-answers-B" value="B" />
<label for="question-1-answers-B">B) Cascading Style Sheets</label>
</div>
<div>
<input type="radio" name="question-1-answers" id="question-1-answers-C" value="C" />
<label for="question-1-answers-C">C) Crazy Solid Shapes</label>
</div>
<div>
<input type="radio" name="question-1-answers" id="question-1-answers-D" value="D" />
<label for="question-1-answers-D">D) None of the above</label>
</div>
</li>
Observe que hay cuatro entradas allí, pero todas tienen un tipo de “radio” y un atributo de “nombre” idéntico. Básicamente, actúan como una entrada única de esa manera, ya que solo se puede seleccionar uno de ellos a la vez y los datos se envían como valor único.
Al final, nuestro botón de enviar:
<input type="submit" value="Submit Quiz" />
En nuestro archivo grade.php, necesitamos obtener los valores que se han PUBLICADO, luego verificaremos cada uno e incrementaremos un número correcto, y finalmente mostraremos un div que muestra el número de respuestas correctas:
<?php
$answer1 = $_POST['question-1-answers'];
$answer2 = $_POST['question-2-answers'];
$answer3 = $_POST['question-3-answers'];
$answer4 = $_POST['question-4-answers'];
$answer5 = $_POST['question-5-answers'];
$totalCorrect = 0;
if ($answer1 == "B") { $totalCorrect++; }
if ($answer2 == "A") { $totalCorrect++; }
if ($answer3 == "C") { $totalCorrect++; }
if ($answer4 == "D") { $totalCorrect++; }
if ($answer5) { $totalCorrect++; }
echo "<div id='results'>$totalCorrect / 5 correct</div>";
?>