Jump to content
Fórum Script Brasil
  • 0

Questão de múltipla escolha


acscarolina
 Share

Question

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 to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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>

 

 

 

Edited by Sandro2011
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...