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

Como saber se o usuário fez a prova online?


Guest Rafael P.C

Pergunta

Guest Rafael P.C

Pessoal estol desenvolvendo uma prova online semanal para meu trabalho e tenho que fazer uma validação do tipo se o usuário já tiver feito a prova o link da prova não vai aparecer.

Bom a estrutura é a seguinte tenho uma pagina logon aonde o usuário coloca seu numero de identificação “RE” quando ele efetua o logon ele é direcionado para menu da prova correspondente de sua ária neste menu tenho o link do gabarito respondido da prova da semana anterior e o link da prova da semana e ai que estol tentando fazer condição. O código que esta dando errado esta abaixo.

O nome do banco a onde são inseridas as respostas é avaliação.mdb

Uma das tabelas é Ava_cross

Os campos são id, data, re, nome, supervisor, gestor, aria, prédio, p_1, p_2, p_3, p_5, p_6, p_7

<%
sub valide_prov()
  SQL= SELECT COUNT(ava_cross) AS RE, FROM ava_cross WHERE RE = request.Form(re)
end sub 
%>
<%
    If  valide_prov()  = False Then
      Response.Write "CONFIRA RESULTADO NA PROCIMA SEMANA"
    Else
      Response.Write "<a href="AVA_CROSS.ASP">FDSFFD</a>"
    End If
%>

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

Voce precisa usar uma function porque retornam valores... na verdade não sei bem porque você fez uma Sub ou se realmente precisa de function MASS..

Voce só fez o select, cade o execute dele? Cade o if no banco pra saber se tem registro ou o que retornou (preenchido/não preenchido) ?

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Rafael P.C

Bom na verdade não sei como fazer direito só me deram uma dica e estou correndo atrás. Como é muito urgente postei para ver o que você me falavam. Em fim modifique o código mas ainda esta dando erro

Pagina Logon

[cod]

<form ACTION="validate.asp" method="POST">

RE:</span> <input name="username" type="text" id="email" style="BORDER-RIGHT: #50615F 1pt solid; BORDER-TOP: #50615F 1pt solid; BORDER-LEFT: #50615F 1pt solid; BORDER-BOTTOM: #50615F 1pt solid; BACKGROUND-COLOR: #899B91; FONT-FAMILY: verdana; FONT-SIZE: 9pt; COLOR: #ffffff" size="6" maxLength="6" onKeyPress="return blokletras(event)" /></td>

<td width="135"><input type="image" src="ini.jpg" border="0">

[/cod]

Pagina validate.asp

[cod]

<%@Language=VBScript%>

<%Response.Buffer = True%>

<!--#INCLUDE FILE="config.inc"-->

<html>

<body>

<%

UserName = Replace(Trim(abs(Request.Form("username"))), "'", "''")

MM_valUsername = CStr(Request.Form("username"))

Session("MM_Username") = MM_valUsername

If UserName = "" Then Response.Redirect "ERRO.ASP"

SQL = "Select ID, UserName, Clearance, ExpireDate From Login"

Set RS = MyConn.Execute(SQL)

While Not RS.EOF

If UserName = RS("UserName") Then

If RS("ExpireDate") > Now() Then

Session("allow") = True

Session("clearance") = RS("Clearance")

Level = RS("Clearance")

Else

Response.Redirect "utility.asp?method=expired"

End If

End If

RS.MoveNext

Wend

CleanUp(RS)

If Session("allow") = True Then

If Level = 1 Then Response.Redirect "super_premium.asp"

If Level = 2 Then Response.Redirect "premium.asp"

If Level = 3 Then Response.Redirect "cross.asp"

Else

Response.Redirect "ERRO.ASP"

End If

%>

</body>

</html>

[/cod]

Pagina DISCUSAO.ASP

[cod]

<%

Dim MM_discusao_STRING

MM_discusao_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ= " & server.MapPath("login.mdb")

%>

<%

Dim valide_ava

valide_ava = "Driver={Microsoft Access Driver (*.mdb)};DBQ= " & server.MapPath("avaliacao.mdb")

%>

[/cod]

Pagina cross.asp

[cod]

<%@Language=VBSCript%>

<%Response.Buffer=True%>

<!--#include file="Connections/discusao.asp" -->

‘ Validar

<%

valide = MM_Username

dim quant_ava

Dim Rs_valide_ava

Set Rs_valide_ava = Server.CreateObject("ADODB.Recordset")

Rs_valide_ava.ActiveConnection = valide_ava

Rs_valide_ava.Source = "SELECT count(re) FROM ava_premium WHERE re = valide" = quant_ava

Rs_valide_ava.open()

%>

‘ ai esta a Condição

<%

If quant_ava = 1 Then

Response.Write "CONFIRA RESULTADO NA PROCIMA SEMANA"

Else

Response.Write "<a href=""AVA_CROSS.ASP"">1º de Julho</a>"

End If

%>

[/cod]

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Rafael P.C

Bom na verdade não sei como fazer direito só me deram uma dica e estou correndo atrás. Como é muito urgente postei para ver o que você me falavam. Em fim modifique o código mas ainda esta dando erro

Pagina Logon

<form ACTION="validate.asp" method="POST">
RE:</span> <input name="username" type="text" id="email" style="BORDER-RIGHT: #50615F 1pt solid; BORDER-TOP: #50615F 1pt solid; BORDER-LEFT: #50615F 1pt solid; BORDER-BOTTOM: #50615F 1pt solid; BACKGROUND-COLOR: #899B91; FONT-FAMILY: verdana; FONT-SIZE: 9pt; COLOR: #ffffff" size="6" maxLength="6" onKeyPress="return blokletras(event)" /></td>
        <td width="135"><input type="image" src="ini.jpg" border="0">
Pagina validate.asp
<%@Language=VBScript%>
<%Response.Buffer = True%>
<!--#INCLUDE FILE="config.inc"-->

<html>
<body>

<%
UserName = Replace(Trim(abs(Request.Form("username"))), "'", "''")

MM_valUsername = CStr(Request.Form("username"))
Session("MM_Username") = MM_valUsername


If UserName = "" Then Response.Redirect "ERRO.ASP"

SQL = "Select ID, UserName, Clearance, ExpireDate From Login"
Set RS = MyConn.Execute(SQL)

While Not RS.EOF  
  If UserName = RS("UserName") Then
    If RS("ExpireDate") > Now() Then
      Session("allow") = True
      Session("clearance") = RS("Clearance")
      Level = RS("Clearance")
    Else
      Response.Redirect "utility.asp?method=expired"
    End If
  End If
  RS.MoveNext
Wend

CleanUp(RS)

If Session("allow") = True Then
  If Level = 1 Then Response.Redirect "super_premium.asp"
  If Level = 2 Then Response.Redirect "premium.asp"
  If Level = 3 Then Response.Redirect "cross.asp"
Else
  Response.Redirect "ERRO.ASP"
End If
%>

</body>
</html>
Pagina DISCUSAO.ASP
<%
Dim MM_discusao_STRING
MM_discusao_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ= " & server.MapPath("login.mdb") 
%>

<%
Dim valide_ava
valide_ava = "Driver={Microsoft Access Driver (*.mdb)};DBQ= " & server.MapPath("avaliacao.mdb") 
%>
Pagina cross.asp
<%@Language=VBSCript%>
<%Response.Buffer=True%>
<!--#include file="Connections/discusao.asp" -->
‘ Validar

<%
valide = MM_Username
dim quant_ava
Dim Rs_valide_ava
Set Rs_valide_ava = Server.CreateObject("ADODB.Recordset")
Rs_valide_ava.ActiveConnection = valide_ava
Rs_valide_ava.Source = "SELECT count(re) FROM ava_premium WHERE re = valide" = quant_ava
Rs_valide_ava.open()
%>

‘ ai esta a Condição 

<%
    If  quant_ava = 1 Then
      Response.Write "CONFIRA RESULTADO NA PROCIMA SEMANA"
    Else
      Response.Write "<a href=""AVA_CROSS.ASP"">1º de Julho</a>"
    End If
%>

Erro

Informações técnicas (para a equipe de suporte)

Tipo de erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)

[Microsoft][Driver ODBC para Microsoft Access] Instrução SQL inválida. 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' ou 'UPDATE' esperado.

/ava/sistem/cross.asp, line 12

Tipo de navegador:

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)

Página:

GET /ava/sistem/cross.asp

Link para o comentário
Compartilhar em outros sites

  • 0

Ok cara isso não é muito dificil, mas você tem q fazer por partes igual Jack Stripper hauhauhauhahua ... então você tem q criar uma página onde o usuário irá entrar com os dados para efetuar o login, você deve criar um formulário e dentro desse formulário usar um método e enviar para uma página ASP q fará a validação do usuário ou não ... depois disso você fará as outras etapas q você necessitar ... cria uma página HTML para o usuário entrar com o seu login e senha ... e posta ai

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Rafael P.C

Então Jow a pagina a onde o usuário digita o RE que o login esta postada acima o processo de validação que diz a qual página o usuário pertence é validate.asp

Link para o comentário
Compartilhar em outros sites

  • 0

Ok entendi, mas a sua página tá faltando ums propriedades do HTML .. vou fazer uma mais ou menos

<form ACTION="validate.asp" method="POST">

RE:</span> <input name="username" type="text" id="email" style="BORDER-RIGHT: #50615F 1pt solid; BORDER- <td width="135"><input type="submit" value="Salvar">

</form>

Validate.asp

<% 'Conexão com o banco de dados
conexao="DBQ=C:\Inetpub\wwwroot\ASP_exemplos\login\senha.mdb;Driver={Microsoft Access Driver (*.mdb)}"
Set DB = Server.CreateObject("ADODB.Connection")
DB.Open conexao
username=(Request.form("username"))
set acesso=DB.Execute("SELECT * FROM acesso WHERE campodaTabela='"&username&")

' Caso os dados não estiverem corretos o usuário é enviado para a entrar.htm
if acesso.eof then
Response.write "acesso negado"

else

end if
DB.close
%>

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

  • 0
Guest Rafael P.C

O Ok, mas a parte que eu não estou conseguindo é se o cara já tiver feito a prova o link da prova não deve aparecer.

Antes desculpa por esta imitação da pagina, masfoi o que deu para fazer e deu trabalho mesmo assim rsrs. Obrigado pela força

Pagina Logon

___________________________________

| ----------------------------------------------------- |

| ----------------------------------------------------- |

| ----------------------------------------------------- |

| ----------------Digite seu RE ------------------- |

| ----------------RE:| 375453 | ---------------- |

| ----------------------------------------------------- |

| ---------------- Logar ----------------------------|

| ----------------------------------------------------- |

| ----------------------------------------------------- |

| ----------------------------------------------------- |

| ----------------------------------------------------- |

| ----------------------------------------------------- |

Na parte aonde esta “Clique aqui “ na pagina CROSS.asp deve ser feito uma validação se o cara já tiver feito a prova “a prova é imputada no banco avaliação.mdb” não deve aparecer o link para o Clique aqui e sim confira o gabarito respondido na próxima semana.

Pagina CROSS.asp

____________________________________

| --------------------------|---------------------------|

| --------------------------|---------------------------|

| --------------------------|---------------------------|

| --------------------------|---------------------------|

| --------------------------|---------------------------|

|fazer a Prova---------|---------------------------|

|---------------------------|---------------------------|

|-------Clique aqui-------|---------------------------|

|---------------------------|---------------------------|

|-------BABABA----------|---------------------------|

|---------------------------|---------------------------|

|---------------------------|---------------------------|

|---------------------------|---------------------------|

|---------------------------|---------------------------|

|---------------------------|---------------------------|

|---------------------------|---------------------------|

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia

Ok entendi, na página onde você exibe o link .... antes do link você faz um if assim:

If  rs("campoDoBanco") <> "" Then
      Ação
    Else
      Mostra o link
    End If

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Rafael P.C

Elaborei este código, mas ele só me retorna a condição Else mesmo que já tenha feito a prova.

<%@Language=VBSCript%>

<%Response.Buffer=True%>

<!--#include file="Connections/discusao.asp" -->

<%

Dim Rs_sessao__MMColParam

Rs_sessao__MMColParam = "1"

If (Session("MM_Username") <> "") Then

Rs_sessao__MMColParam = Session("MM_Username")

End If

%>

<%

Dim Rs_sessao

Set Rs_sessao = Server.CreateObject("ADODB.Recordset")

Rs_sessao.ActiveConnection = MM_discusao_STRING

Rs_sessao.Source = "SELECT * FROM Login WHERE UserName = '" + Replace(Rs_sessao__MMColParam, "'", "''") + "'"

Rs_sessao.Open()

valide = Rs_sessao.Fields.Item("UserName")

%>

<%

Set conn = Server.CreateObject("ADODB.Connection")

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("avaliacao.mdb") & ";Persist Security Info=False"

Set rs = Server.CreateObject("ADODB.recordset")

Set rs2 = Server.CreateObject("ADODB.recordset")

sqlstr="SELECT count(re) as total FROM ava_premium WHERE re = " & valide & ""

rs.open sqlstr,conn,3,3

'response.Write(rs("total")):response.End()

If rs("total") = 1 Then

response.Write("Não Mostra o link")

Else

response.Write("<a href=""AVA_CROSS.ASP"">■ 1º de Julho</a>")

End If

%>

[\code]

Link para o comentário
Compartilhar em outros sites

  • 0

porque q você tá usando If rs("total")=1 Then

esse 1 indica se a prova foi feita ou não ... tipo fez a prova = 1 não fez a prova = 2

?????

se for faz assim:

total= rs("total")

If (total)= "1" Then
response.Write("Não Mostra o link")
Else
response.Write("<a href=""AVA_CROSS.ASP"">■ 1º de Julho</a>")
End If
%>

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

  • 0
Guest Rafael P.C

Não funciono. Quanto ao 1 é o numero de vezes que o RE é repetido no banco de dados. SELECT count(re) as total FROM ava_premium WHERE re = " & valide & " ele que vai contar.

Eu coloque este código para ver se ele estava me dando o resultado correto <%=(Rs("total"))%> mas mesmo após ter feito a prova o valor retornado é 0

<%

Set conn = Server.CreateObject("ADODB.Connection")

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("avaliacao.mdb") & ";Persist Security Info=False"

Set rs = Server.CreateObject("ADODB.recordset")

Set rs2 = Server.CreateObject("ADODB.recordset")

sqlstr="SELECT count(re) as total FROM ava_premium WHERE re = " & valide & ""

rs.open sqlstr,conn,3,3

'response.Write(rs("total")):response.End()

If rs("total") <> 1 Then

response.Write("<a href=""AVA_CROSS.ASP"">■ 1º de Julho</a>")

Else

response.Write("Não Mostra o link")

End If

%>

Link para o comentário
Compartilhar em outros sites

  • 0

Entendi ...

variavel= rs("CampoDoBanco")

If (variavel) <> "" Then
response.Write("Não Mostra o link")
Else
response.Write("<a href=""AVA_CROSS.ASP"">■ 1º de Julho</a>")
End If
%>

coloque no lugar do CampoDoBanco algum campo onde o usuário deve preencher, para saber se fez a prova ou não , ou seja se o usuário José fez a prova o campo nome é preenchido, caso o contrário o campo não é preenchido !!! ai você altera o CampoDoBanco para Banco

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
      152,3k
    • Posts
      652,6k
×
×
  • Criar Novo...