Foros del Web » Programando para Internet » PHP »

Ayuda con corrección de test (*URGENTE*)

Estas en el tema de Ayuda con corrección de test (*URGENTE*) en el foro de PHP en Foros del Web. Hola a todos. Estamos haciendo un trabajo sobre HTML y PHP, y necesitamos hacer un test que se corrija automaticamente. El test se genera con ...
  #1 (permalink)  
Antiguo 12/12/2008, 07:15
 
Fecha de Ingreso: diciembre-2008
Mensajes: 2
Antigüedad: 15 años, 3 meses
Puntos: 0
Ayuda con corrección de test (*URGENTE*)

Hola a todos. Estamos haciendo un trabajo sobre HTML y PHP, y necesitamos hacer un test que se corrija automaticamente. El test se genera con las preguntas de una base de datos, y tiene que corregirse comparando la opción seleccionada con la opción correcta, almacenada en la base de datos tambien.

Necesitamos almacenar la respuesta seleccionada en una tabla para compararla con la tabla de respuestas correctas no?? ElL problema es que las preguntas no son estáticas, sino que cada test debe ser aleatorio... Gracias por la ayuda!

Os dejo el codigo para ayudaros:

<html>
<head>
<title> Introducir Preguntas y Respuestas</TITLE>
</head>

<body bgcolor=#C8F200>

<A HREF="alumno.html#marcador">
<IMG SRC="imagenes/cabecera.jpg" WIDTH="100%">
<A NAME="marcador">
</A>

<font size=6 face='gulim'>
<P align="center">
Marque la Respuesta Correcta
<br>
Al finalizar pulse en <B>Enviar</B>
<br>
</P>
<FORM>
<?php
$link = mysql_connect("localhost","grupo11","grupo11")
or die ("No se ha podido conectar");

mysql_select_db("datos1")
or die("Error al tratar de selecccionar esta base");

$dbname="datos1";
$tablename="preguntas";
$cont=1;
$resp="resp";

$query="SELECT * FROM $tablename;";
$result=mysql_db_query ($dbname, $query);
while ($row = mysql_fetch_array ($result))
{
print ("<TD><b>$cont $row[texto_pregunta]</b><BR></TD><HR width=25% align='left'>\n");

print ("<TR>");
print ("<TD><INPUT type=radio name=$cont value=$resp> $row[opc_1]<BR></TD>\n");
print ("<TD><INPUT type=radio name=$cont value=$resp> $row[opc_2]<BR></TD>\n");
print ("<TD><INPUT type=radio name=$cont value=$resp> $row[opc_3]<BR></TD>\n");
print ("<TD><INPUT type=radio name=$cont value=$resp> $row[opc_4]<BR><BR></TD>\n");
print ("</TR>");
$cont++;
// con esta sentencia sql insertaremos los datos en la base de datos

mysql_query("INSERT INTO contestacion (id_resp,texto_pregunta,resp) VALUES ('$cont','$row[texto_pregunta]','$resp')");
}
mysql_free_result($result);
?>
</table>
<input TYPE="submit" VALUE="Enviar Test">&nbsp;<input TYPE="reset" VALUE="Limpiar Test">
</FORM>
</BODY>
</HTML>
  #2 (permalink)  
Antiguo 12/12/2008, 08:32
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: Ayuda con corrección de test (*URGENTE*)

Con PHP y sin recargar la página no se pueden hacer. Sí con AJAX.

Podrías hacer el test presentando de forma aleatoria las preguntas con sus opciones y después de que la persona lo completa y presiona enviar, usando los id's de las preguntas buscás la pregunta y comparás la respuesta. En base a eso presentás el resultado o lo almacenás.

Espero sirva de algo. Saludos.
  #3 (permalink)  
Antiguo 12/12/2008, 08:41
Avatar de XLogus  
Fecha de Ingreso: noviembre-2008
Ubicación: AQP
Mensajes: 495
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: Ayuda con corrección de test (*URGENTE*)

La explicacion a eso es un poco extensa asi que la esbozare a grandes razgos:
Primero debemos hacer un script que muestra la pregunta con sus alternativas al azar para eso lo mejor seria tener dos tablas una con las preguntas y otra con las respuestas, ademas en la tabla respuestas un campo bool para saber cual es la correcta.

Y se invocarian 10 preguntas al azar con una consulta tipo:
Código:
SELECT * FROM preguntas ORDER BY RAND() LIMIT 10
Dentro del bucle que muestra las preguntas tendria que colocarse otro bucle que muestre las altenativas tambien al azar
Código:
SELECT alternativas.* FROM alternativas, preguntas WHERE alternativas.pregunta_id LIKE preguntas.pregunta_id ORDER BY RAND()
¿Como identifico que alternativa marcó, a que pregunta pertenece y cuál es la correcta?
En el primer bucle hay que hacer que se imprima un campo hidden donde se guarde el id de la pregunta, algo asi quedaría la estructura:
Código HTML:
<input type="hidden" name="pregunta1" value="id_pregunta">
<INPUT type=radio name="pregunta1_1" value="id_alternativa">Opcion1
<INPUT type=radio name="pregunta1_1" value="id_alternativa">Opcion2
<INPUT type=radio name="pregunta1_1" value="id_alternativa">Opcion3
Cuando los datos se envien a php sabremos el id de la pregunta y la opcion que marco el alumno, ahora habria que verificar si es correcta:
Código:
/// busca la alternativa correcta
SELECT alternativa.* FROM alternativas, preguntas WHERE preguntas.id_preguntas LIKE alternativas.id_pregunta AND alternativas.alternativa_correcta=1
/// comparamos con la marcada
 if ($row[alternativa_id]==$_POST['pregunta1_1']) {
    echo "Alternativa correcta";
} else {
  echo "Alternativa incorrecta";
}
  #4 (permalink)  
Antiguo 14/12/2008, 04:12
 
Fecha de Ingreso: diciembre-2008
Mensajes: 2
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Ayuda con corrección de test (*URGENTE*)

Muchas gracias por vuestras respuestas. Lo comprobaremos lo antes posible, a ver si ya podemos hacerlo funcionar con vuestras aportaciones. Un saludo!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:27.