ASP - Carga automatica

 
Vista:
Imágen de perfil de Orlando
Val: 6
Ha mantenido su posición en ASP (en relación al último mes)
Gráfica de ASP

Carga automatica

Publicado por Orlando (1 intervención) el 30/12/2018 03:20:41
Saludos a todos!

Espero puedan orientarme con este pequeño problema.
Tengo una plataforma similar a Moodle para exámenes en linea, Mi problema radica en que después de que mi alumno ya selecciono su respuesta, el sistema automáticamente después de 5 segundos me guarda los id tanto de la pregunta como de la respuesta en mi base de datos. PERO NO LOGRO HACER QUE DESPUÉS QUE YA GUARDO ME CARGUE LA SIGUIENTE PREGUNTA.

Dejo código de referencia de los 2 archivos ASP que ocupo.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<%
	lad=request.querystring("tas")
	vidp=request.querystring("idp")
 
	set cnx=Server.CreateObject("ADODB.Connection")
	set myrs=CreateObject("ADODB.Recordset")
	cnx.ConnectionString=Application("MyCon")
	cnx.open
	strsql="select * from personal where usuario='"+lad+"'"
	myrs.ActiveConnection=cnx
	myrs.source=strsql
	myrs.open, ,0,2
%>
<script language="JavaScript">
function pb(log)
{   
	var rb=document.getElementsByName("res");
	var nulo=100;
	for(var i=0;i<rb.length;i++)
	{
		if(rb[i].checked)
		{
			nulo=rb[i].value
		}
	}
	window.location.href="respuestas.asp?nul="+nulo+"&idp="+log;
}
 
</script>
<html>
	<head>
		<title>Cuerpo</title>
	</head>
	<body>
		<br><br><br><br><br><br><br><br><br><br><br><br><br>
				<%
					'Alumno
					if vidp=3 then%>
					<table border="2" align="center">
			<tr>
				<td><h1><p><%response.write myrs("Nombre")%></p></h1></td></tr>
			
			</table><br><br>
					<table border="2" align="center">
						<tr>
							<td>
					<%
					    set myrsv=CreateObject("ADODB.Recordset")  
						vsql="SELECT Materia.*, Personal.Nombre, Personal.Usuario, Asignacion.*, Aplicacion.* FROM (Personal INNER JOIN (Materia INNER JOIN Asignacion ON Materia.Id_materia = Asignacion.Id_materia) ON Personal.Id_personal = Asignacion.Id_personal) INNER JOIN Aplicacion ON Asignacion.Id_asignacion = Aplicacion.Id_asignacion WHERE (((Personal.Usuario)='"+lad+"'))"
						myrsv.ActiveConnection=cnx
						myrsv.source=vsql
						myrsv.open ,,0,2	
						vfechsis=date()
						vhorasis=time()
						myrsv.movefirst
						do while(not(myrsv.eof))
							vfech=myrsv("Fecha")
							vhora=myrsv("Hora_inicio")
							vhoraf=myrsv("Hora_fin")
							if vfech=vfechsis then
							   if vhorasis>=vhora then
							     if vhorasis<=vhoraf then
								   vidm=myrsv("Asignacion.Id_Materia")
								   
								   'random
								   inicio=1
								   fin=5
								   randomize()
								   num=int((fin-inicio+1)*rnd+inicio)
								   
								   'Abre las preguntas de acuerdo al random
								   set myrsp=CreateObject("ADODB.Recordset")  
								   sqlp="SELECT * FROM preguntas WHERE (((preguntas.id_materia)="+cstr(vidm)+") AND ((preguntas.[No])="+cstr(num)+"))"
								   myrsp.ActiveConnection=cnx
								   myrsp.source=sqlp								   
								   myrsp.open ,,0,2	
								   vidr=myrsp("id_pregunta")  	
								   
								   'Valida que no se repita la pregunta
								   set myrsl=CreateObject("ADODB.recordset")
								   sqll="select * from resultados"
								   myrsl.activeConnection=cnx
								   myrsl.source=sqll
								   myrsl.open, ,0,2
									if (myrsl.eof and myrsl.bof) then
										response.write myrsp("descripcion")
									else
 
									end if
 
								   %>
								   </td></tr></table><br><br>								   
										<table border="2" align="center">								   
								   <tr><td>
								   <%								   
								   'abre las respuestas de cuerdo a la pregunta
								   set myrsr=CreateObject("ADODB.Recordset")  
								   sqlr="SELECT * FROM respuestas WHERE id_pregunta="+cstr(vidr)
								   myrsr.ActiveConnection=cnx
								   myrsr.source=sqlr
								   myrsr.open ,,0,2								   
								   myrsr.movefirst								   
								   do while(not(myrsr.eof)) 
								   %>
									 <br><input type="radio" onclick="pb(<%response.write vidr%>)" name="res" value="<% response.write myrsr("id_respuesta") %>"><% response.write myrsr("respuesta") %>								   
								   <%							
									myrsr.movenext
								   loop
									%>
									<input type="hidden" name="idpre" id="idpre" value="<% response.write vidr %>">
									<%								   
								   exit do	
								 end if  
								end if 
							end if 
							myrsv.movenext
						loop												
					%>
				</td>				
				<script language="JavaScript">
					setTimeout("pb(<%response.write vidr%>)",5000);
				</script>
			</tr>	
		<%
			end if
		%>
		</table>
		

Comienza segundo archivo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<%
	idpre=Request.QueryString("idp")
	idres=Request.QueryString("nul")
 
	if idres=100 then
		respuesta=null
	else
		respuesta=idres
	end if
 
	set cnx=Server.CreateObject("ADODB.Connection")
	set myrsa=CreateObject("ADODB.Recordset")
	cnx.ConnectionString=Application("MyCon")
	cnx.open
	asql="SELECT * from resultados"
	myrsa.ActiveConnection=cnx
	myrsa.source=asql
	myrsa.open, ,0,2
 
	if myrsa.eof and myrsa.bof then
		id=1
	else
		myrsa.movelast
		id=myrsa("id_resultados")+1
	end if
	myrsa.addnew
	myrsa("id_resultados")=id
	myrsa("id_pregunta")=idpre
	myrsa("id_respuesta")=respuesta
	myrsa.update
%>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2
Ha disminuido 1 puesto en ASP (en relación al último mes)
Gráfica de ASP

Carga automatica

Publicado por Jorge (1 intervención) el 19/03/2019 03:42:53
Que tal Orlando:

Me parece que el timer te esta metiendo ruido y es lo que impide que pases a la siguiente pregunta.
Estas seguro que efectivamente estas guardando las respuestas?

Mi sugerencia es que uses un webservice sencillo con ajax para que caches la respuesta de la pregunta en turno y si el usuario cambia la respuesta, simplemente planchas la respuesta anterior sin mayor problema.

No uses timers, hazlo de la forma sencilla haciendo que el usuario oprima el botón para cargar la siguiente pregunta o en su defecto pagina las preguntas (5 preguntas por pagina tal vez).

Espero que esto te sea de utilidad. Saludos !!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar