Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luan Ramos

[Resolvido] pegar valor de um select sql e jogar numa variável PH

Recommended Posts

Olá pessoal.

 

Estou com um probleminha que eu creio que seja simples. Mas vamos lá. Na escola em que trabalho estou desenvolvendo um sistema onde os alunos farão provas através de um sistema online em PHP e MySQL.

 

Primeiramente o professor cadastra a prova no sistema juntamente com o seu gabarito (na tabela sis_prova), este processo gera o código da prova que será digitado pelo aluno para responder a prova (Suas respostas serão gravadas na tabela sis_resp_prova). As respostas do aluno são comparadas com as respostas fornecidas pelo professor através de um select como mostra o código abaixo.

 

$calcula_nota = sprintf("SELECT cod_prova,
      ( (case when sis_prova.resp1 = sis_resp_prova.resposta1 then 1 else 0 end) +
        (case when sis_prova.resp2 = sis_resp_prova.resposta2 then 1 else 0 end) +
        (case when sis_prova.resp3 = sis_resp_prova.resposta3 then 1 else 0 end) +
        (case when sis_prova.resp4 = sis_resp_prova.resposta4 then 1 else 0 end) +
        (case when sis_prova.resp5 = sis_resp_prova.resposta5 then 1 else 0 end) +
        (case when sis_prova.resp6 = sis_resp_prova.resposta6 then 1 else 0 end) +
        (case when sis_prova.resp7 = sis_resp_prova.resposta7 then 1 else 0 end) +
        (case when sis_prova.resp8 = sis_resp_prova.resposta8 then 1 else 0 end) ) nota
      FROM sis_prova, sis_resp_prova
      WHERE sis_prova.cod_prova=",$_POST['cod_prova1'] ,"sis_resp_prova.cod_prova1=",$_POST['matricula']);

 

Quando faço a consulta direto no BD, jogando os valores diretamente, da tudo certo.

 

O PROBLEMA É QUE EU QUERO PEGAR O RESULTADO DESSE SELECT E JOGAR DENTRO DE UMA VARIÁVEL PHP PRA PODER FAZER O ALUNO VER NA TELA E DEPOIS GRAVAR NA TABELA DO BANCO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal.

 

Estou com um probleminha que eu creio que seja simples. Mas vamos lá. Na escola em que trabalho estou desenvolvendo um sistema onde os alunos farão provas através de um sistema online em PHP e MySQL.

 

Primeiramente o professor cadastra a prova no sistema juntamente com o seu gabarito (na tabela sis_prova), este processo gera o código da prova que será digitado pelo aluno para responder a prova (Suas respostas serão gravadas na tabela sis_resp_prova). As respostas do aluno são comparadas com as respostas fornecidas pelo professor através de um select como mostra o código abaixo.

 

$calcula_nota = sprintf("SELECT cod_prova,
      ( (case when sis_prova.resp1 = sis_resp_prova.resposta1 then 1 else 0 end) +
        (case when sis_prova.resp2 = sis_resp_prova.resposta2 then 1 else 0 end) +
        (case when sis_prova.resp3 = sis_resp_prova.resposta3 then 1 else 0 end) +
        (case when sis_prova.resp4 = sis_resp_prova.resposta4 then 1 else 0 end) +
        (case when sis_prova.resp5 = sis_resp_prova.resposta5 then 1 else 0 end) +
        (case when sis_prova.resp6 = sis_resp_prova.resposta6 then 1 else 0 end) +
        (case when sis_prova.resp7 = sis_resp_prova.resposta7 then 1 else 0 end) +
        (case when sis_prova.resp8 = sis_resp_prova.resposta8 then 1 else 0 end) ) nota
      FROM sis_prova, sis_resp_prova
      WHERE sis_prova.cod_prova=",$_POST['cod_prova1'] ,"sis_resp_prova.cod_prova1=",$_POST['matricula']);

 

Quando faço a consulta direto no BD, jogando os valores diretamente, da tudo certo.

 

O PROBLEMA É QUE EU QUERO PEGAR O RESULTADO DESSE SELECT E JOGAR DENTRO DE UMA VARIÁVEL PHP PRA PODER FAZER O ALUNO VER NA TELA E DEPOIS GRAVAR NA TABELA DO BANCO.

 

 

Não consegui entender muito bem o que você não está conseguindo fazer, mas para obter a nota em uma variável basta fazer o seguinte:

 

<?php

$calcula_nota = mysql_query("SELECT cod_prova,
      ( (case when sis_prova.resp1 = sis_resp_prova.resposta1 then 1 else 0 end) +
        (case when sis_prova.resp2 = sis_resp_prova.resposta2 then 1 else 0 end) +
        (case when sis_prova.resp3 = sis_resp_prova.resposta3 then 1 else 0 end) +
        (case when sis_prova.resp4 = sis_resp_prova.resposta4 then 1 else 0 end) +
        (case when sis_prova.resp5 = sis_resp_prova.resposta5 then 1 else 0 end) +
        (case when sis_prova.resp6 = sis_resp_prova.resposta6 then 1 else 0 end) +
        (case when sis_prova.resp7 = sis_resp_prova.resposta7 then 1 else 0 end) +
        (case when sis_prova.resp8 = sis_resp_prova.resposta8 then 1 else 0 end) ) nota
      FROM sis_prova, sis_resp_prova
      WHERE sis_prova.cod_prova=",$_POST['cod_prova1'] ,"sis_resp_prova.cod_prova1=",$_POST['matricula']);

$data = mysql_fetch_assoc($calcula_nota);

echo "Nota: ".$data["nota"];
echo "Cod_Prova: ".$data["cod_prova"];
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum.. você está usando a função sprintf de forma errada...

Faltou colocar os %s %d de acordo com o tipo de variável. Mas pelo jeito que está tentando fazer parece que é uma simples concatenação, então não precisa do sprinft.

Documentação da função sprintf: http://br1.php.net/sprintf

 

Uma concatenação simples ficaria assim:

 

$calcula_nota ="SELECT cod_prova,
      ( (case when sis_prova.resp1 = sis_resp_prova.resposta1 then 1 else 0 end) +
        (case when sis_prova.resp2 = sis_resp_prova.resposta2 then 1 else 0 end) +
        (case when sis_prova.resp3 = sis_resp_prova.resposta3 then 1 else 0 end) +
        (case when sis_prova.resp4 = sis_resp_prova.resposta4 then 1 else 0 end) +
        (case when sis_prova.resp5 = sis_resp_prova.resposta5 then 1 else 0 end) +
        (case when sis_prova.resp6 = sis_resp_prova.resposta6 then 1 else 0 end) +
        (case when sis_prova.resp7 = sis_resp_prova.resposta7 then 1 else 0 end) +
        (case when sis_prova.resp8 = sis_resp_prova.resposta8 then 1 else 0 end) ) nota
      FROM sis_prova, sis_resp_prova
      WHERE sis_prova.cod_prova=" . $_POST['cod_prova1'] . "sis_resp_prova.cod_prova1=" . $_POST['matricula'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui entender muito bem o que você não está conseguindo fazer, mas para obter a nota em uma variável basta fazer o seguinte:

 

<?php

$calcula_nota = mysql_query("SELECT cod_prova,
      ( (case when sis_prova.resp1 = sis_resp_prova.resposta1 then 1 else 0 end) +
        (case when sis_prova.resp2 = sis_resp_prova.resposta2 then 1 else 0 end) +
        (case when sis_prova.resp3 = sis_resp_prova.resposta3 then 1 else 0 end) +
        (case when sis_prova.resp4 = sis_resp_prova.resposta4 then 1 else 0 end) +
        (case when sis_prova.resp5 = sis_resp_prova.resposta5 then 1 else 0 end) +
        (case when sis_prova.resp6 = sis_resp_prova.resposta6 then 1 else 0 end) +
        (case when sis_prova.resp7 = sis_resp_prova.resposta7 then 1 else 0 end) +
        (case when sis_prova.resp8 = sis_resp_prova.resposta8 then 1 else 0 end) ) nota
      FROM sis_prova, sis_resp_prova
      WHERE sis_prova.cod_prova=",$_POST['cod_prova1'] ,"sis_resp_prova.cod_prova1=",$_POST['matricula']);

$data = mysql_fetch_assoc($calcula_nota);

echo "Nota: ".$data["nota"];
echo "Cod_Prova: ".$data["cod_prova"];
?>

 

Amigão.

 

Está me retornando o seguinte erro:

mysql_fetch_assoc() expects parameter 1 to be resource, string given in C:\wamp\www\avaliacao\aluno_realizaprova.php on line 107

 

e código que estou usando é esse:

 

//antes dessa parte ele faz o insert com as respostas do aluno no banco.
 $calcula_nota = sprintf("SELECT cod_prova,
      ( (case when sis_prova.resp1 = sis_resp_prova.resposta1 then 1 else 0 end) +
        (case when sis_prova.resp2 = sis_resp_prova.resposta2 then 1 else 0 end) +
        (case when sis_prova.resp3 = sis_resp_prova.resposta3 then 1 else 0 end) +
        (case when sis_prova.resp4 = sis_resp_prova.resposta4 then 1 else 0 end) +
        (case when sis_prova.resp5 = sis_resp_prova.resposta5 then 1 else 0 end) +
        (case when sis_prova.resp6 = sis_resp_prova.resposta6 then 1 else 0 end) +
        (case when sis_prova.resp7 = sis_resp_prova.resposta7 then 1 else 0 end) +
        (case when sis_prova.resp8 = sis_resp_prova.resposta8 then 1 else 0 end) ) nota
      FROM sis_prova, sis_resp_prova
      WHERE sis_prova.cod_prova=",$_POST['cod_prova'] ,"AND", "sis_resp_prova.cod_prova1=",$_POST['matricula']);

//executa o insert				
 mysql_select_db($database_DB_Connect, $DB_Connect);
 $Result1 = mysql_query($insertSQL, $DB_Connect) or die(mysql_error());


$Mensagem1='<script>
	alert("Prova realizada com sucesso");
      </script>';
 print $Mensagem1;	
 //falta pegar esse select e gravar em uma variavel
 $data = mysql_fetch_assoc($calcula_nota);
 echo "Nota: ".$data["nota"];
 echo "Cod_prova: ".$data["cod_prova"];



Compartilhar este post


Link para o post
Compartilhar em outros sites

Use assim:

 

//antes dessa parte ele faz o insert com as respostas do aluno no banco.
 $calcula_nota = mysql_query("SELECT cod_prova,
      ( (case when sis_prova.resp1 = sis_resp_prova.resposta1 then 1 else 0 end) +
        (case when sis_prova.resp2 = sis_resp_prova.resposta2 then 1 else 0 end) +
        (case when sis_prova.resp3 = sis_resp_prova.resposta3 then 1 else 0 end) +
        (case when sis_prova.resp4 = sis_resp_prova.resposta4 then 1 else 0 end) +
        (case when sis_prova.resp5 = sis_resp_prova.resposta5 then 1 else 0 end) +
        (case when sis_prova.resp6 = sis_resp_prova.resposta6 then 1 else 0 end) +
        (case when sis_prova.resp7 = sis_resp_prova.resposta7 then 1 else 0 end) +
        (case when sis_prova.resp8 = sis_resp_prova.resposta8 then 1 else 0 end) ) nota
      FROM sis_prova, sis_resp_prova
      WHERE sis_prova.cod_prova=".$_POST['cod_prova']." AND sis_resp_prova.cod_prova1=".$_POST['matricula']);

$Mensagem1='<script>
               alert("Prova realizada com sucesso");
             </script>';
 print $Mensagem1;     
 //falta pegar esse select e gravar em uma variavel
 $data = mysql_fetch_assoc($calcula_nota);
 echo "Nota: ".$data["nota"];
 echo "Cod_prova: ".$data["cod_prova"];

//executa o insert                              
 mysql_select_db($database_DB_Connect, $DB_Connect);
 $Result1 = mysql_query($insertSQL, $DB_Connect) or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use assim:

 

//antes dessa parte ele faz o insert com as respostas do aluno no banco.
 $calcula_nota = mysql_query("SELECT cod_prova,
      ( (case when sis_prova.resp1 = sis_resp_prova.resposta1 then 1 else 0 end) +
        (case when sis_prova.resp2 = sis_resp_prova.resposta2 then 1 else 0 end) +
        (case when sis_prova.resp3 = sis_resp_prova.resposta3 then 1 else 0 end) +
        (case when sis_prova.resp4 = sis_resp_prova.resposta4 then 1 else 0 end) +
        (case when sis_prova.resp5 = sis_resp_prova.resposta5 then 1 else 0 end) +
        (case when sis_prova.resp6 = sis_resp_prova.resposta6 then 1 else 0 end) +
        (case when sis_prova.resp7 = sis_resp_prova.resposta7 then 1 else 0 end) +
        (case when sis_prova.resp8 = sis_resp_prova.resposta8 then 1 else 0 end) ) nota
      FROM sis_prova, sis_resp_prova
      WHERE sis_prova.cod_prova=".$_POST['cod_prova']." AND sis_resp_prova.cod_prova1=".$_POST['matricula']);

$Mensagem1='<script>
               alert("Prova realizada com sucesso");
             </script>';
 print $Mensagem1;     
 //falta pegar esse select e gravar em uma variavel
 $data = mysql_fetch_assoc($calcula_nota);
 echo "Nota: ".$data["nota"];
 echo "Cod_prova: ".$data["cod_prova"];

//executa o insert                              
 mysql_select_db($database_DB_Connect, $DB_Connect);
 $Result1 = mysql_query($insertSQL, $DB_Connect) or die(mysql_error());

 

 

Continua dando o mesmo erro. :mellow:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Substitui ai

 

$calcula_nota = mysql_query("SELECT cod_prova,
      ( (case when sis_prova.resp1 = sis_resp_prova.resposta1 then 1 else 0 end) +
        (case when sis_prova.resp2 = sis_resp_prova.resposta2 then 1 else 0 end) +
        (case when sis_prova.resp3 = sis_resp_prova.resposta3 then 1 else 0 end) +
        (case when sis_prova.resp4 = sis_resp_prova.resposta4 then 1 else 0 end) +
        (case when sis_prova.resp5 = sis_resp_prova.resposta5 then 1 else 0 end) +
        (case when sis_prova.resp6 = sis_resp_prova.resposta6 then 1 else 0 end) +
        (case when sis_prova.resp7 = sis_resp_prova.resposta7 then 1 else 0 end) +
        (case when sis_prova.resp8 = sis_resp_prova.resposta8 then 1 else 0 end) ) nota
      FROM sis_prova, sis_resp_prova
      WHERE sis_prova.cod_prova=".$_POST['cod_prova']." AND sis_resp_prova.cod_prova1=".$_POST['matricula']) or die(mysql_error());

 

deve dar um erro agora, informe por favor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Substitui ai

 

$calcula_nota = mysql_query("SELECT cod_prova,
      ( (case when sis_prova.resp1 = sis_resp_prova.resposta1 then 1 else 0 end) +
        (case when sis_prova.resp2 = sis_resp_prova.resposta2 then 1 else 0 end) +
        (case when sis_prova.resp3 = sis_resp_prova.resposta3 then 1 else 0 end) +
        (case when sis_prova.resp4 = sis_resp_prova.resposta4 then 1 else 0 end) +
        (case when sis_prova.resp5 = sis_resp_prova.resposta5 then 1 else 0 end) +
        (case when sis_prova.resp6 = sis_resp_prova.resposta6 then 1 else 0 end) +
        (case when sis_prova.resp7 = sis_resp_prova.resposta7 then 1 else 0 end) +
        (case when sis_prova.resp8 = sis_resp_prova.resposta8 then 1 else 0 end) ) nota
      FROM sis_prova, sis_resp_prova
      WHERE sis_prova.cod_prova=".$_POST['cod_prova']." AND sis_resp_prova.cod_prova1=".$_POST['matricula']) or die(mysql_error());

 

deve dar um erro agora, informe por favor

 

está dando este erro:

 

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\avaliacao\aluno_realizaprova.php on line 110

Compartilhar este post


Link para o post
Compartilhar em outros sites

faltou o mysql_query no codigo.

 

//antes dessa parte ele faz o insert com as respostas do aluno no banco.
 $calcula_nota = mysql_query("SELECT cod_prova,
      ( (case when sis_prova.resp1 = sis_resp_prova.resposta1 then 1 else 0 end) +
        (case when sis_prova.resp2 = sis_resp_prova.resposta2 then 1 else 0 end) +
        (case when sis_prova.resp3 = sis_resp_prova.resposta3 then 1 else 0 end) +
        (case when sis_prova.resp4 = sis_resp_prova.resposta4 then 1 else 0 end) +
        (case when sis_prova.resp5 = sis_resp_prova.resposta5 then 1 else 0 end) +
        (case when sis_prova.resp6 = sis_resp_prova.resposta6 then 1 else 0 end) +
        (case when sis_prova.resp7 = sis_resp_prova.resposta7 then 1 else 0 end) +
        (case when sis_prova.resp8 = sis_resp_prova.resposta8 then 1 else 0 end) ) nota
      FROM sis_prova, sis_resp_prova
      WHERE sis_prova.cod_prova=".$_POST['cod_prova']." AND sis_resp_prova.cod_prova1=".$_POST['matricula']);

$Mensagem1='<script>
               alert("Prova realizada com sucesso");
             </script>';
 $res = mysql_query($calcula_nota); 
 $data = mysql_fetch_assoc($res);

 echo "Nota: ".$data["nota"];
 echo "Cod_prova: ".$data["cod_prova"];

//executa o insert                              
 mysql_select_db($database_DB_Connect, $DB_Connect);
 $Result1 = mysql_query($insertSQL, $DB_Connect) or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

faltou o mysql_query no codigo.

 

//antes dessa parte ele faz o insert com as respostas do aluno no banco.
 $calcula_nota = mysql_query("SELECT cod_prova,
      ( (case when sis_prova.resp1 = sis_resp_prova.resposta1 then 1 else 0 end) +
        (case when sis_prova.resp2 = sis_resp_prova.resposta2 then 1 else 0 end) +
        (case when sis_prova.resp3 = sis_resp_prova.resposta3 then 1 else 0 end) +
        (case when sis_prova.resp4 = sis_resp_prova.resposta4 then 1 else 0 end) +
        (case when sis_prova.resp5 = sis_resp_prova.resposta5 then 1 else 0 end) +
        (case when sis_prova.resp6 = sis_resp_prova.resposta6 then 1 else 0 end) +
        (case when sis_prova.resp7 = sis_resp_prova.resposta7 then 1 else 0 end) +
        (case when sis_prova.resp8 = sis_resp_prova.resposta8 then 1 else 0 end) ) nota
      FROM sis_prova, sis_resp_prova
      WHERE sis_prova.cod_prova=".$_POST['cod_prova']." AND sis_resp_prova.cod_prova1=".$_POST['matricula']);

$Mensagem1='<script>
               alert("Prova realizada com sucesso");
             </script>';
 $res = mysql_query($calcula_nota); 
 $data = mysql_fetch_assoc($res);

 echo "Nota: ".$data["nota"];
 echo "Cod_prova: ".$data["cod_prova"];

//executa o insert                              
 mysql_select_db($database_DB_Connect, $DB_Connect);
 $Result1 = mysql_query($insertSQL, $DB_Connect) or die(mysql_error());

 

o mysql_query não está sendo dado direto no SELECT ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

verdade me confundi, desculpe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É a query que está com problema, pois está retornando false no mysql_query();

coloca mysql_query() or die(mysql_error());

 

agora está retornando este erro:

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sis_resp_prova.matricula=123456' at line 11

 

Aguardo resposta.

Obrigado!

 

agora está retornando este erro:

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sis_resp_prova.matricula=123456' at line 11

 

Aguardo resposta.

Obrigado!

 

 

e o código que estou usando agora é este:

 

$calcula_nota = sprintf("SELECT cod_prova,
      ( (case when sis_prova.resp1 = sis_resp_prova.resposta1 then 1 else 0 end) +
        (case when sis_prova.resp2 = sis_resp_prova.resposta2 then 1 else 0 end) +
        (case when sis_prova.resp3 = sis_resp_prova.resposta3 then 1 else 0 end) +
        (case when sis_prova.resp4 = sis_resp_prova.resposta4 then 1 else 0 end) +
        (case when sis_prova.resp5 = sis_resp_prova.resposta5 then 1 else 0 end) +
        (case when sis_prova.resp6 = sis_resp_prova.resposta6 then 1 else 0 end) +
        (case when sis_prova.resp7 = sis_resp_prova.resposta7 then 1 else 0 end) +
        (case when sis_prova.resp8 = sis_resp_prova.resposta8 then 1 else 0 end) ) nota
      FROM sis_prova, sis_resp_prova
      WHERE sis_prova.cod_prova=".$_POST['cod_prova1']."AND sis_resp_prova.matricula=".$_POST['matricula']);

 $res = mysql_query($calcula_nota, $DB_Connect) or die(mysql_error());   
 $data = mysql_fetch_assoc($res);
 echo "Nota: ".$data['nota'];
 echo "Cod_prova: ".$data['cod_prova'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta faltando um espaco em:

 

WHERE sis_prova.cod_prova=".$_POST['cod_prova1'].">> <<AND sis_resp_prova.matricula="

 

Nao se esqueca de tirar o >> e << :)/>

 

PERFEITO BROTHER. FUNCIONOU PERFEITAMENTE. PERDENDO PRA UM ESPAÇO É BRINCADEIRA NÉ?!

 

RSRSRS

 

OBRIGADOO!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.