Olá, para quem necessita criar um Quiz de perguntas simples de múltipla escolha com um botão enviar (ou até outro para resetar). Bem simples (até idiota) porem é um ponto de início para quem deseja fazer algo mais incrementável com Ajax, estatísticas e tudo mais.
Este Quiz simples serve para se ter uma noção de como criar um formulário HTML e lidar com os dados em outra página PHP

Simples Quiz
A imagem e os códigos deste post são todos de inteira propriedade do Chris Coyier e foram retirados do site css-tricks.com por isso não serão traduzidos.
As perguntas para o teste são adicionadas no formulário:
<form id="quiz" action="grade.php" method="post"> ... questions here ... </form>
Formulários normalmente tem um botão de submit, e esta não é uma exceção. Sempre que o botão (submit) é clicado, ele irá dar um “POST” dos dados de cada entrada no interior do formulário para a URL fornecida.
Quizes são essencialmente listas de perguntas, por isso vamos fazer uma lista ordenada, para isso uma questão individual será parecido com isto:
<li>
<h3>CSS Stands for...</h3>
<div>
<input id="question-1-answers-A" name="question-1-answers" type="radio" value="A" />
<label for="question-1-answers-A">A) Computer Styled Sections </label></div>
<div>
<input id="question-1-answers-B" name="question-1-answers" type="radio" value="B" />
<label for="question-1-answers-B">B) Cascading Style Sheets</label></div>
<div>
<input id="question-1-answers-C" name="question-1-answers" type="radio" value="C" />
<label for="question-1-answers-C">C) Crazy Solid Shapes</label></div>
<div>
<input id="question-1-answers-D" name="question-1-answers" type="radio" value="D" />
<label for="question-1-answers-D">D) None of the above</label></div></li>
Aviso: Existem 4 inputs mais todos eles são do tipo “radio” e tem o mesmo “name”. Eles basicamente funcionam como um único input, uma vez que apenas um deles podem ser selecionado por vez e os dados são postados (POST) com um único valor.
No final, nosso botão de submit:
<input type="submit" value="Submit Quiz" />
Em nosso arquivo grade.php, temos que pegar os valores que foram postados (POST), em seguida, iremos verificar cada uma e um incrementar os números correto e, finalmente, vamos exibir uma div que mostra o número de respostas corretas:
<?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>
Post original | arquivos para download | Demo on line
Muito bom o conteudo de seu site, estou desenvolvendo um QUIZ, referente a segurança do trabalho NÃO DOMINO programação estou desenvolvendo em Flahs
NÃO ESTOU CONSEGUINDO
contar os pontos
cadastro ao entrar no site
um espaço a onde a pessoal possa enviar enviar questões
Peovão,Técn.Seg.do Tra
Colider-mt
Desculpe PEOVÃO, não domino Flash, porem se fizer com HTML/PHP eu posso ajudar.
Flash, não vai mais me servir tenho OBRIGATÓRIAMENTE fazer tudo em HTML/PHP mesmo …pois o programa on-line tem melhor aceitação do que baixar e executar no proprio computador do usuário….
final de semana vou tenter fazer alguma coisa com seu condigos….
Bom, se precisa de ajuda pode contar.
Parabens pelo artigo. Estou precisando de uma ajuda sua, como eu faria para que as perguntas não fosse de múltipla escolha e sim q cada resposta da pergunta tivesse uma pontuação. EX:
Pergunta 01
(a) vale 1 ponto
(b) vale 2 ponto
(c) vale 3 ponto
Pergunta 02
(a) vale 1 ponto
(b) vale 2 ponto
(c) vale 3 ponto
no final o resultado seria o somatorio dos pontos das respostas selecionadas.
agradeço desde já
Você poderia fazer esta conta no javascript ou fazer no PHP. Tudo depende ao certo o que você quer.
Você poderia fazer com um array no php e somar os valores.
Só não entendi o codigo do arquivo grade.php.
como é o passo a passo.
faço o quiz com as perguntas e dps faço esse arquivo?
Leonardo, o arquivo grade.php é o arquivo que vai receber a resposta dos usuários, é nele que vai ser dado o post do Quiz. Vejamos, ele vai receber a requisição e montar a quantidade de corretas. Ajudei?
Ele vai ser o ultimo arquivo que você vai fazer, mas não precisa ter uma ordem desde que todos sejam criados.
E como faço para as respostas do quiz feito pelo internauta chegar até mim?
queria que ao final de responder o quiz, as respostas fossem enviadas para um email.
Desculpe a demora, não havia visto este comentário rsrs.
Assim, vc usa a função mail do php, da uma pesquisada lá na doc do PHP.
Boa tarde. Estou desenvolvendo um script com base neste do seu post. Acontece que no arquivo das perguntas, eu seleciono no BD usando rand() e isso atrapalha a somatória no arquivo grade.php, pois ele só soma corretamente se as perguntas vierem em ordem. Como o cliente cadastra mais de 150 perguntas por tema (são 3 temas) ele quer que apenas 30 sejam mostradas aleatoriamente. Então, como poderia fazer no grade.php para somar os resultados corretamente?
Desde ja agradeço sua atenção. Qualquer dica será muito bem vinda.
No seu caso, no banco você terá que ter as perguntas, as opções e a resposta correta. No caso você precisará passar para o grade.php quais foram as perguntas selecionadas para este usuário. Neste ponto você precisará selecionar as respostas para estas perguntas e conferir se bateram.
Bom, sua resposta não teve nada a ver com a minha pergunta, mas valeu. Já resolvi desenvolvendo um script próprio.
Até
ola admin, eu estou a iniciar a minha carreira como webdesign, e preciso k m ajude com umas dicas do php…..
pode ser?
Olá guest, que bom que esteja iniciando essa carreira, tenho certeza que ela vai te dar bons frutos. “K me ajude”? Opa, dicas em php, massa. posso ajudar sim, mas antes de mais nada, eu recomendo a leitura do manual do php (no site do php), recomendo a busca por informações na net (google é seu amigo) e que entre em algum grupo de php no google groups, yahoo groups.
Atenciosamente Ruan Carlos e não admin
Obrigado Ruan Carlos, por acaso estou primeiramente a ler lógica de pogramação… e em seguida vou ler o manual do php..
obrigado pelo conselho amigão
Olá, achei esta publicação bem importante para quem está elaborando um quiz, como no meu caso. Porém gostaria de saber como ficaria o código php se as respostas do quiz estivessem em um banco de dados. Desde já agradeço.
Nesse caso você precisaria recuperar as perguntas e as respostas do banco, após isso basta fazer a comparação com as respostas dadas.
Oi Ruan, eu estou tentando fazer um quiz e estou me baseando no que disse.. Só que bem, como faço pra ele no fim de todas as perguntas, mostrar as respostas corretas e quantas questões ele acertou?