logo

Criando um simples Quiz com PHP

logo

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

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

Bookmark and Share

19 marcas, uhull to “Criando um simples Quiz com PHP”

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

  2. admin disse:

    Desculpe PEOVÃO, não domino Flash, porem se fizer com HTML/PHP eu posso ajudar.

  3. Peovão, Técnico em segurança do trabalho disse:

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

  4. Ruan Carlos disse:

    Bom, se precisa de ajuda pode contar.

  5. Gabriel disse:

    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á

  6. Leonardo Siqueira disse:

    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?

    • Ruan Carlos disse:

      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.

  7. Julio Azevedo disse:

    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.

    • Ruan Carlos disse:

      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.

  8. jerry disse:

    ola admin, eu estou a iniciar a minha carreira como webdesign, e preciso k m ajude com umas dicas do php…..

    pode ser?

    • Ruan Carlos disse:

      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

  9. jerry disse:

    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

  10. Yannikson disse:

    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.

  11. Bruna disse:

    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?

logo
logo
Hospedado no Djalma | Ruan Carlos.