Ir para conteúdo
Fórum Script Brasil
  • 0

Questão de múltipla escolha


acscarolina

Pergunta

Olá, boa tarde. 

Fiz um curso de PHP e estou apanhando bastante para colocar em prática o que aprendi.

Preciso da ajuda de vocês.

Minha intenção é colocar várias questões de múltipla escolha onde o estudante possa resolvê-las online. Eu gostaria que, quando o estudante clicasse na alternativa e enviasse através do botão enviar, que terá abaixo de cada questão, aparecesse um feedback (abaixo do botão enviar) dizendo se a escolha está correta ou não. 

Montei esse código, no DreamWeaver em uma folha php, mas não está funcionando. Vocês poderiam me indicar o erro e dizer como faço para arrumar?

Obs: aqui eu coloquei só duas questões. 

Desde já obrigada.

 

<?php
function Gabarito(){
$resposta1 = $_POST['1'];

if ($resposta1 == '1')
{
echo "resposta correta";
}
else
{
echo "resposta incorreta. Gabarito: D";
}

if ($resposta2 == '1')
{
echo "resposta correta";
}
else
{
echo "resposta incorreta. Gabarito: C";
}

}
?>

<form id="select" method="post">
  <div>
<h1 id="cabeçalho">Biologo, Santa Barb D'Oeste, Cetro, 2015 - Com relação ao achado, demonstrado na figura, é correto
afirmar que, no lodo, há presença de</h1></div>
<div>
        <input id="question-1-answers-A" name="question-1-answers" type="radio" value="0" />
      <label for="question-1-answers-A">A) ovos de Balantidium coli </label></div>
<div>
        <input id="question-1-answers-B" name="question-1-answers" type="radio" value="0" />
        <label for="question-1-answers-B">B) larvas de Ascarídeos.</label></div>
<div>
        <input id="question-1-answers-C" name="question-1-answers" type="radio" value="0" />
        <label for="question-1-answers-C">C) ovos de Trichuris trichiura.</label></div>
<div>
        <input id="question-1-answers-D" name="question-1-answers" type="radio" value="1" />
        <label for="question-1-answers-D">D) ovos de Taenia saginata.</label></div>
<div>
        <input id="question-1-answers-E" name="question-1-answers" type="radio" value="0" />
        <label for="question-1-answers-E">E) cistos de Entamoeba sp</label></div>
        <p>
          <input name="Responder" type="button" value="Responder" />
        </p>
           <?php echo (Gabarito()); ?>
           
    </form>
   <form id="select" method="post">
      <h1 id="cabeçalho">Analista Adm, Americana, SHDias, 2013 - Enunciado da questão:</h1>
            
        <div>
  <input id="question-1-answers-A" name="question-2-answers" type="radio" value="0" />
        <label for="question-1-answers-A">A) Computer Styled Sections </label></div>
<div>
        <input id="question-1-answers-B" name="question-2-answers" type="radio" value="0" />
        <label for="question-1-answers-B">B) Cascading Style Sheets</label></div>
<div>
        <input id="question-1-answers-C" name="question-2-answers" type="radio" value="1" />
        <label for="question-1-answers-C">C) Crazy Solid Shapes</label></div>
<div>
        <input id="question-1-answers-D" name="question-2-answers" type="radio" value="0" />
        <label for="question-1-answers-D">D) None of the above</label></div></li>
      <input name="Responder" type="button" value="Responder" />
       <?php echo Gabarito(); ?>

    </form> </div>

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Olá

Acertei pra você:

 


<?php

$questao=(int)$_GET['q'];
$resposta = $_POST['questao'];
$gabarito = $_POST['gabarito'];


function Gabarito($questao,$resposta,$gabarito){   
if ($resposta == $gabarito)
{
return "resposta correta";
}
else
{
return "resposta incorreta. Gabarito: ".$gabarito;
}

}
if ($questao>0) {   
    $verifica=Gabarito($questao,$resposta,$gabarito); 
    }
?>

<form id="select" method="post" action="teste.php?q=1">
  <div>
<h1 id="cabeçalho">Biologo, Santa Barb D'Oeste, Cetro, 2015 - Com relação ao achado, demonstrado na figura, é correto
afirmar que, no lodo, há presença de</h1></div>
<div>
        <input id="questao-A" name="questao" type="radio" value="A" />
      <label for="questao-A">A) ovos de Balantidium coli </label></div>
<div>
        <input id="questao-B" name="questao" type="radio" value="B" />
        <label for="questao-B">B) larvas de Ascarídeos.</label></div>
<div>
        <input id="questao-C" name="questao" type="radio" value="C" />
        <label for="questao-C">C) ovos de Trichuris trichiura.</label></div>
<div>
        <input id="questao-D" name="questao" type="radio" value="D" />
        <label for="questao-D">D) ovos de Taenia saginata.</label></div>
<div>
        <input id="questao-E" name="questao" type="radio" value="E" />
        <label for="questao-E">E) cistos de Entamoeba sp</label></div>
        <p>
        
          <input  name="gabarito" type="hidden" value="D" />
          <input name="Responder" type="submit" value="Responder" />
        </p>
        
        <? if ($q==1) echo $verifica;?>
       
           
    </form>
   <form id="select" method="post" action="teste.php?q=2">
      <h1 id="cabeçalho">Analista Adm, Americana, SHDias, 2013 - Enunciado da questão:</h1>
            
        <div>
  <input id="questao-A" name="questao" type="radio" value="A" />
        <label for="questao-A">A) Computer Styled Sections </label></div>
<div>
        <input id="questao-B" name="questao" type="radio" value="B" />
        <label for="questao-B">B) Cascading Style Sheets</label></div>
<div>
        <input id="questao-C" name="questao" type="radio" value="C" />
        <label for="questao-C">C) Crazy Solid Shapes</label></div>
<div>
        <input id="questao-D" name="questao" type="radio" value="D" />
        <label for="questao-D">D) None of the above</label></div></li>
        
        <p>
        <input  name="gabarito" type="hidden" value="C" />
      <input name="Responder" type="submit" value="Responder" />
      </p>
      
      <? if ($q==2) echo $verifica;?>

    </form> </div>
 

 

Dessa forma que eu coloquei, fica mais fácil inserir questões. Basta colocar os <input type='hidden'> com os valores corretos e alterar o link do 'action que está no form com o número da questão especifica...

Obs: altere o nome do arquivo do action para o nome do seu script ('teste.php')

 

Link para o comentário
Compartilhar em outros sites

  • 0

Olá! As duas formas acima, deixa a possibilidade de a resposta ser visualizado no cliente.

Segue sugestão de maneira que a resposta fique apenas no servidor:

<?php
                // define array com as questões:
                $questions = [
                    [
                        'question' => "Biologo, Santa Barb D'Oeste, Cetro, 2015 - Com relação ao achado, demonstrado na figura, é correto afirmar que, no lodo, há presença de",
                        'options' => [
                            'A' => 'Ovos de Balantidium coli;',
                            'B' => 'Larvas de Ascarídeos;',
                            'C' => 'Ovos de Trichuris trichiura;',
                            'D' => 'Ovos de Taenia saginata;',
                            'E' => 'Cistos de Entamoeba sp;',
                        ],
                        'answer' => 'D',
                    ],
                    [
                        'question' => "Analista Adm, Americana, SHDias, 2013 - Enunciado da questão:",
                        'options' => [
                            'A' => 'Computer Styled Sections;',
                            'B' => 'Cascading Style Sheets;',
                            'C' => 'Crazy Solid Shapes;',
                            'D' => 'None of the above;',
                        ],
                        'answer' => 'C',
                    ],
                ];
                // caso algo tenha sido postado:
                if (sizeof($_POST)) {
                    // verificar de qual questão é a resposta
                    $answer = array_keys($_POST);
                    // verificar se o que chegou é uma answer-:
                    if (preg_match('/^answer-/i', $answer[0])) {
                        // questão respondida
                        $question = preg_replace('/answer-/', '', $answer[0]);
                        // resposta escolhida
                        $answer = $_POST['answer-' . $question];

                        // define mensagem de erro:
                        $msg[$question] = '<p class="error">Resposta Incorreta!</p>';

                        // Mas se a resposta escolhida for a correta:
                        if ($questions[$question]['answer'] === $answer) {
                            $msg[$question] = '<p class="ok">Parabéns! Resposta Correta!</p>';
                        }
                    } else { // se o que chegou não é uma answer-:
                        echo '<p class="error">Resposta Inválida!</p>';
                    }
                }
                // inicia variável para guardar os forms:
                $forms = null;
                // percorre o array $questions, gera formulários com as questões:
                foreach ($questions as $key => $q) {
                    $forms .= '<form method="post"><h2>' . $q['question'] . '</h2>';
                    foreach ($q['options'] as $letter => $option) {
                        $forms.="<div><input type='radio' name='answer-$key' id='q-$key-$letter' value='$letter'> $letter)
        <label for='q-$key-$letter'>$option</label></div>";
                    }
                    // se houver resposta para esta questão:
                    $forms.=isset($msg[$key]) ? $msg[$key] : null;
                    $forms.='<br><input type="submit" value="Responder"></form>';
                }
                // exibe formulários com questões na tela:
                echo $forms;

Link para o comentário
Compartilhar em outros sites

  • 0
19 horas atrás, Sandro2011 disse:

Olá

Acertei pra você:

 


<?php

$questao=(int)$_GET['q'];
$resposta = $_POST['questao'];
$gabarito = $_POST['gabarito'];


function Gabarito($questao,$resposta,$gabarito){   
if ($resposta == $gabarito)
{
return "resposta correta";
}
else
{
return "resposta incorreta. Gabarito: ".$gabarito;
}

}
if ($questao>0) {   
    $verifica=Gabarito($questao,$resposta,$gabarito); 
    }
?>

<form id="select" method="post" action="teste.php?q=1">
  <div>
<h1 id="cabeçalho">Biologo, Santa Barb D'Oeste, Cetro, 2015 - Com relação ao achado, demonstrado na figura, é correto
afirmar que, no lodo, há presença de</h1></div>
<div>
        <input id="questao-A" name="questao" type="radio" value="A" />
      <label for="questao-A">A) ovos de Balantidium coli </label></div>
<div>
        <input id="questao-B" name="questao" type="radio" value="B" />
        <label for="questao-B">B) larvas de Ascarídeos.</label></div>
<div>
        <input id="questao-C" name="questao" type="radio" value="C" />
        <label for="questao-C">C) ovos de Trichuris trichiura.</label></div>
<div>
        <input id="questao-D" name="questao" type="radio" value="D" />
        <label for="questao-D">D) ovos de Taenia saginata.</label></div>
<div>
        <input id="questao-E" name="questao" type="radio" value="E" />
        <label for="questao-E">E) cistos de Entamoeba sp</label></div>
        <p>
        
          <input  name="gabarito" type="hidden" value="D" />
          <input name="Responder" type="submit" value="Responder" />
        </p>
        
        <? if ($q==1) echo $verifica;?>
       
           
    </form>
   <form id="select" method="post" action="teste.php?q=2">
      <h1 id="cabeçalho">Analista Adm, Americana, SHDias, 2013 - Enunciado da questão:</h1>
            
        <div>
  <input id="questao-A" name="questao" type="radio" value="A" />
        <label for="questao-A">A) Computer Styled Sections </label></div>
<div>
        <input id="questao-B" name="questao" type="radio" value="B" />
        <label for="questao-B">B) Cascading Style Sheets</label></div>
<div>
        <input id="questao-C" name="questao" type="radio" value="C" />
        <label for="questao-C">C) Crazy Solid Shapes</label></div>
<div>
        <input id="questao-D" name="questao" type="radio" value="D" />
        <label for="questao-D">D) None of the above</label></div></li>
        
        <p>
        <input  name="gabarito" type="hidden" value="C" />
      <input name="Responder" type="submit" value="Responder" />
      </p>
      
      <? if ($q==2) echo $verifica;?>

    </form> </div>
 

 

Dessa forma que eu coloquei, fica mais fácil inserir questões. Basta colocar os <input type='hidden'> com os valores corretos e alterar o link do 'action que está no form com o número da questão especifica...

Obs: altere o nome do arquivo do action para o nome do seu script ('teste.php')

 

 

olá pessoal obrigada pelas respostas.

Sandro eu preciso salvar um arquivo php com o nome  teste.php?q=1 ?? porque eu não consigo salvar um documento assim. Salvei apenas  teste.php. onde eu colei a parque do php

e essas variáveis:

$questao=(int)$_GET['q'];
$resposta = $_POST['questao'];
$gabarito = $_POST['gabarito'];

eu preenchi com o numero da questão (no lugar de q eu coloquei 1 e no lugar de gabarito eu coloquei a letra D, já para a reposta eu não mudei nada). 

Era assim? Porque ainda não deu certo.

Não aparece nada quando eu faço o teste e clico nas alternativas, não aparece o gabarito. 

 

Qual o erro?

 

Link para o comentário
Compartilhar em outros sites

  • 0

Boa Tarde!

O odocumento deve ser salvo como teste.php.  O 'q=1' é a variável utilizada para identificar a questão que foi respondida!

 

Para novas questões do formulario, você deve colocar no

<input  name="gabarito" type="hidden" value="C" /> o gabarito da questão que voce está criando;

no <form> você muda o numero da questão ('q=1, ou q=3, etc, )

e na parte   <? if ($q==2) echo $verifica;?>    você também muda o numero da questão;

 

É bem fácil, exemplo pra você de uma nova questão de numero 555 (somente um exemplo)

 

   <form id="select" method="post" action="teste.php?q=555">
  <h1 id="cabeçalho">QUESTÃO 555 (só exemplo!!!!) Qual cor eu gosto mais?</h1>
            
  <div>
  <input id="questao-A" name="questao" type="radio" value="A" />
  <label for="questao-A">A) Vermelho </label>

  </div>
  <div>
        <input id="questao-B" name="questao" type="radio" value="B" />
        <label for="questao-B">B) Verde</label>

  </div>
  <div>
        <input id="questao-C" name="questao" type="radio" value="C" />
        <label for="questao-C">C) Azul</label>

  </div>
  <div>
        <input id="questao-D" name="questao" type="radio" value="D" />
        <label for="questao-D">D) Cinza</label>

  </div>
        
  <p>
      <input  name="gabarito" type="hidden" value="C" />
      <input name="Responder" type="submit" value="Responder" />
  </p>
      
      <? if ($q==555) echo $verifica;?>

  </form>

 

 

 

Editado por Sandro2011
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...