Ir para conteúdo

POWERED BY:

Arquivado

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

Davidson_2008

Quiz compolexo

Recommended Posts

Sou iniciante em programação ASP e preciso criar um Quiz em asp que mostre 10 perguntas aleatórias de um total de 20 armazenadas no BD, e para cada pergunta mostre 4 respostas aleatórias de um total de 10 armazenadas no BD (Uma certa e 3 erradas). Algumas perguntas possuem respostas sim e não apenas. Preciso ainda fazer um temporizador para cada pergunta, o usuário terá 30 segundos para responder.

 

Esse quiz deve funcionar para 5 cursos diferentes, que chamamos aqui de Módulos.

 

Possuo 4 tabelas no BD:

 

Catalogo(ID,Cod_Modulo, Nome_Modulo, Descricao, Duracao)

 

Status(ID, IDCliente, Cod_Modulo, Status(0- Não iniciado, 1 - em andamento, 2 - Aprovado, 3 - reprovado), Data_Inicio, Data Termino, Nota)

 

Perguntas(IDPergunta, Cod_Modulo, Pergunta)

 

Respostas(IDResposta, IDPergunta, Resposta, Certa(0 - errada, 1 - Certa))

 

 

Essa página recebe o Cod_modulo por URL do link da página principal. E no final preciso mostrar a nota e alterar o Status e a Nota do usuário.

 

 

Alguem pode me ajudar?? Preciso de ajuda e não tenho a quem recorrer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

para quem ta começando a sua duvida ja é bem especifica e complexa

 

o qeu fez até o momento?

Compartilhar este post


Link para o post
Compartilhar em outros sites

para quem ta começando a sua duvida ja é bem especifica e complexa

 

o qeu fez até o momento?

Já consegui fazer as perguntas e as respostas randomicas.

Só não sei como colocar um temporizador para cada pergunta. E prerciso tbm colocar uma "segurança", se o usuário fechar a janela do quiz, ele perde a chance de fazer novamente( Alterar o elearning_Status.Status recbe 3 para reprovado e 2 para aprovado) mais calcule o que ele fez até o momento que fechou a janela.

 

Poderia dar uma olhada no trexo de código que faz o calculo de acertos e verificar se está funcionando corretamente.

 

 

<%

dim i, j, RS

Dim intRnd, strPerg, strResp, acertos

 

set RS = server.createobject("ADODB.Recordset")

RS.CursorLocation = 3

 

const totperguntas = 10

codigo=Request.QueryString("Cod")

 

'Parte de calculo e atualização do BD elearning_Status -----------------------------------------------------------------

if Request.Form("perguntas") <> "" then

 

  SQL = "SELECT * FROM elearning_Respostas WHERE IDPergunta IN (" & Request.Form("perguntas") & ") ORDER BY IDPergunta"

rs.Open sql ,application("ReserveConnString"), 1,3, 1

i = 0

do until rs.eof

if Request.Form("respostas") = cstr(RS("Certa")) then

acertos = acertos + 1

end if

i = i + 1

rs.movenext

 

loop

 

RS.close

 

SQL = "SELECT * FROM elearning_Status WHERE Cod_Modulo='" & codigo & "' AND IDCliente=" & session("MeuID")

 

RS.open SQL , application("ReserveConnString"), 1,3,1

 

if not RS.EOF then

RS("Nota") = acertos

if acertos > 7 then

RS("Status") = 2

RS("Data_Termino") = cdbl(now())

else

RS("Status") = 3

RS("Data_Termino") = cdbl(now())

end if

RS.Update

 

end if

rs.close

set rs = nothing

Response.Redirect "elearning_principal.asp"

end if

 

%>

<HTML>

<HEAD>

<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">

<TITLE>Avaliação - Treinamento Web</TITLE>

</HEAD>

 

<script language="JavaScript">

function responder(pg)

{

var px = pg + 1;

if(pg < <%=totperguntas%>){

eval("document.all['tbq"+pg+"'].style.display='none'");

eval("document.all['tbq"+px+"'].style.display='block'");

}else{

document.quiz.submit();

}

}

</script>

 

<BODY vlink="#f5f5f5" alink="#f5f5f5" link="#f5f5f5">

<%

dim con

dim resposta

 

function Mostra_Resposta(varIDPergunta)

 

set RSx = server.createobject("ADODB.Recordset")

SQL = "SELECT * FROM elearning_Respostas WHERE IDpergunta ="& varIDPergunta &" ORDER BY Certa DESC"

 

RSx.Open SQL ,application("ReserveConnString"), 3,3, 1

 

if not Rsx.EOF then

If RSx.RecordCount = 2 then

for x=0 to 1

%>

<tr bgcolor="ffffff">

<td style="font-family: verdana, arial; font-size: 12px; font-weight: bold; color: green">

<input type="radio" name="resposta" value="<%=RSx("IDResposta")%>">  <%=RSx("Resposta")%>

</td>

</tr>

<%

RSx.MoveNext

next

else

' Gera números aleatório de um total de registros

i = 0

intRnd = 0

 

dim RespostasSel(4)

dim j

 

 

do while i < 4

'RSx.MoveFirst

if i = 0 then RespostasSel(i) = RSx("IDResposta")

randomize timer

intRnd = (Int(RND * rsx.RecordCount))

rsx.MOVE intRnd

sai = false

j=0

if not rsx.eof then

do while sai = false and j < 4

 

If cint(RespostasSel(j)) = RSx("IDResposta") then

sai = true

end if

j = j + 1

LOOP

 

if sai = false and RespostasSel(I)= "" then

RespostasSel(I) = RSx("IDResposta")

I = I + 1

end if

end if

loop

 

 

for i = 0 to ubound(RespostasSel)

strResp = strResp & RespostasSel(i) & ","

next

strResp = left(strResp, len(strResp)-2)

 

RSx.close

SQL = "SELECT * FROM elearning_Respostas WHERE IDResposta IN (" & strResp & ") ORDER BY IDResposta"

RSx.Open sql ,application("ReserveConnString"), 1,3, 1

 

for x=0 to 3

%>

<tr bgcolor="ffffff">

<td style="font-family: verdana, arial; font-size: 12px; font-weight: bold; color: green">

<input type="radio" name="resposta" value="<%=RSx("IDResposta")%>"> <%=RSx("Resposta")%>

</td>

</tr>

<%

rsx.MoveNext

next

 

end if

end if

RSx.Close

set RSx = nothing

end function

 

 

'Início da Pergunta-----------------------------------------------------------------------------------------------------

 

SQL = "SELECT * FROM elearning_Perguntas WHERE Cod_Modulo='"& codigo &"'"

RS.Open SQL ,application("ReserveConnString"), 3,3, 1

 

'dim PerguntasSel(totperguntas)

dim PerguntasSel(10)

 

' Gera números aleatório de um total de registros

i = 0

intRnd = 0

do while i < totperguntas

RS.MoveFirst

randomize timer

intRnd = (Int(RND * RS.RecordCount))

RS.MOVE intRnd

sai = false

j=0

if not RS.eof then

do while sai = false and j < totperguntas

If PerguntasSel(j) = RS("IDPergunta") then

sai = true

end if

j = j + 1

loop

 

if sai = false and PerguntasSel(I) = "" then

PerguntasSel(I) = RS("IDPergunta")

I = I + 1

end if

end if

 

loop

 

 

for i = 0 to ubound(PerguntasSel)

strPerg = strPerg & PerguntasSel(i) & ","

next

strPerg = left(strPerg, len(strPerg)-2)

rs.close

 

SQL = "SELECT * FROM elearning_Perguntas WHERE IDPergunta IN (" & strPerg & ") ORDER BY IDPergunta"

RS.Open SQL ,application("ReserveConnString"), 1,3, 1

 

%>

<form id="quiz" name="quiz" method="post">

<input type="hidden" name="perguntas" value="<%=strPerg%>">

<input type="hidden" name="respostas" value="<%=strResp%>">

<table width="540" align="center">

<tr>

<td align="right"><img src="http://www.reserve.com.br/imagens/logoreserve_peq.gif"><br><img src="http://www.reserve.com.br/imagens/gestao.gif"></td>

</tr>

</table>

<%

for i=0 to totperguntas

if i <> 0 then display = "none" else display = "block"%>

<div name="tbq<%=i%>" id="tbq<%=i%>" style="display: <%=display%>">

<table width="540" align="center" style="border: 1 solid gray" cellpadding="4">

<tr bgcolor="green">

<td align=center style="font-family: verdana, arial; font-size: 12px; font-weight: bold; color: white">

<p style="margin-right: 5; margin-left: 5; margin-top: 5; margin-bottom: 5"><font color=White><%=RS("Pergunta")%></font></p></td>

</tr>

<tr>

<td>

<table bgcolor="#ffffff" width="100%" cellspacing="0">

<%Mostra_Resposta(RS("IDPergunta"))%>

<tr bgcolor="ffffff">

<td valign="bottom" align="center">

 <a href=# onclick="responder(<%=i%>)" value="Responder"><img src="../imagens/responder.gif" border="0" style="position: relative; top:+3px"></a><br>

<br>

</td>

</tr>

 

</table>

</td></tr>

</table>

</div>

 

 

<%

RS.movenext

next%>

</form>

<%

RS.Close

set RS = nothing

 

%>

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.