Buen día tengan todos.
Recurro a este a grupo porque no encuentro solución a lo que quiero hacer que es lo siguiente.
En un sistema para evaluar alumnos tengo una tabla examen donde guardo las propiedades del mismo, como la materia, el nombre, maestro etc. una tabla auxpregunta y otra auxrespuesta
auxpregunta
-------------------------
id_pregunta - autoincrement
id_examen - int
pregunta - varchar 100
respuesta - varchar 100
auxrespuesta
-------------------------
id_examen - int
id_alumno - int
id_pregunta - int
respuesta - varchar 100
en auxpregunta guardo las preguntas de un examen asociado con el id_examen, cuando el alumno responde dichas preguntas se guardan las respuesas en auxrespuestas y asocio las respuestas con el id_examen y id_pregunta para ordenarlas
en php extraigo las respuestas del examen y las respuestas del alumno para compararlas del siguiente modo.
Código PHP:
//Respuestas del alumno
$respuestaalum = mysqli_query(conexion(),"SELECT respuesta FROM auxrespuestas WHERE id_examen = '$exa' AND id_alumno = '$alum' GROUP by id_pregunta ORDER BY id_pregunta ASC");
//Respuestas correctas
$respuestas = mysqli_query(conexion(),"SELECT respuesta from auxpregunta
WHERE id_examen = '$exa' GROUP by id_pregunta ORDER BY id_pregunta ASC ");
Ahora no encuentro la forma correcta de compararlos con array_diff no he obtenido los resultados esperados.
Necesito saber cuantas respuestas correctas tiene el alumno para hacer la evaluacion
intente con dos while pero me di cuenta que solo me comparaba el primer resultado con todos los demas
Código PHP:
while ($row = $respuestas->fetch_array()) {
while($value = $respuestaalum->fetch_array()){
if ($row['respuesta']==$value['respuesta']) {
$ca+=1;
}
}
}
$promedio = 100/$cantidad;
$calificacion = $ca*$promedio;
Alguien me pudiese echar una mano, o decirme si puedo hacerlo desde la misma consulta sql ya que lo eh intentado con la consulta para obtener los datos en una sola variable pero no los puedo obtener ordenados para las 2 tablas
Código:
SELECT auxrespuestas.id_respuesta, auxrespuestas.id_alumno, auxpregunta.id_pregunta, auxpregunta.respuesta
FROM auxrespuestas, auxpregunta
WHERE auxrespuestas.id_examen = 1 AND (auxrespuestas.id_alumno = 10320865 and auxpregunta.id_examen=1)GROUP by auxpregunta.id_pregunta ORDER BY auxpregunta.id_pregunta ASC
Con esta consulta obtengo las respuestas ordenadas pero solo del lado de la tabla auxpregunta y si cambio el gruop by a auxrespuestas.id_pregunta obtengo las respuestas ordenadas del lado de la tabla auxrespuestas
Espero me puedan ayudar gracias por la atencion