Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Comparar registros de dos tablas

Estas en el tema de Comparar registros de dos tablas en el foro de PHP en Foros del Web. Buenas. A ver, me he quedado atrancado en este codigo Os cuento un poco: Se supone que la intencion es realizar examenes tipo test online. ...
  #1 (permalink)  
Antiguo 21/01/2014, 04:36
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 10 años, 11 meses
Puntos: 4
Comparar registros de dos tablas

Buenas.
A ver, me he quedado atrancado en este codigo
Os cuento un poco:
Se supone que la intencion es realizar examenes tipo test online.
Para eso tengo una tabla con las preguntas:

Tabla Preguntas
ID
Pregunta
Respuesta A
Respuesta B
Respuesta C
Respuesta D
Correcta
IDPregunta
IDTest
(otros datos que no vienen al cuento!)

IDPregunta identifica la pregunta en concreto.
IDTest es la forma de seleccionar el grupo de preguntas por parte del usuario.
Ejemplo:
LINK, al pinchar selecciona las XX preguntas con IDTest = Matematicas

Bien.
El usuario hace su test, pulsa enviar y se guardan en la siguiente tabla:

Tabla Respuestas
ID
Usuario
Respuesta
IDPregunta
IDTest
Fecha

Enviar.php
Se hace el INSERT en la tabla Respuestas
Y aqui me he quedado atrancado.
Ahora tengo que comparar sus respuestas con las respuestas Correctas e ir sumando aciertos y errores.

En principio habia pensado hacer:

Código PHP:
$sql="SELECT * FROM Respuestas WHERE Usuario = '$usuario' AND IDTest = '$IDTest' ORDER BY Fecha DESC LIMIT 1"
//$usuario y $IDTest son variables que vienen definidas, lo estoy poniendo resumido 
Pero claro, me he quedado en blanco a partir de ahi.
No doy con la idea de como hacer para comparar cada respuesta con su correspondiente pregunta.
Por si no me explico bien, un ejemplo a nivel de BDD:

Tabla Respuestas
ID 3
Usuario Pepe
Respuesta A
IDPregunta 008
Fecha 01/01/2014
IDTest 70001

Tabla Preguntas
ID 8
Pregunta ¿Por qué...?
Correcta B
IDPregunta 008
IDTest 70001

Es decir, necesito comparar el valor del campo Respuesta de la tabla Respuestas con el valor del campo Correcta de la tabla Preguntas.
Y asi con las XX preguntas que compongan el test.

En fin, que me he quedado bloqueado y no se como seguir...
Echadme una mano por favor

Muchas gracias.

Cualquier duda preguntadla!! Que puede que no me haya explicado bien!!
  #2 (permalink)  
Antiguo 21/01/2014, 05:31
 
Fecha de Ingreso: septiembre-2008
Ubicación: Valencia
Mensajes: 160
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Comparar registros de dos tablas

¿Tienes dso identificadores para Preguntas? (ID , IDPregunta)

Lo puedes hacer de varias formas, una de ellas sería coger el identificador de la pregunta del Usuario y recuperar los valores de la tabla de esa pregunta, y de ambas recuperar las respuestas y comprar con ellas.

Otra forma seria unir las tablas con un JOIN, de manera que tendrás las dos tablas juntas y una vez hecho eso es ir leyendo Usuario, ver que pregunta es que ha contestado y que es lo correcto.

Esta es la forma en la que lo haría yo con esas tablas.

Código PHP:
$sql="SELECT * FROM Respuestas r JOIN Preguntas p ON (r.IDPregunta = p.IDPregunta) where (r.IDTest = '$IDTest'  AND r.Usuario = '$usuario' )"
Así tendrías todo junto, ahora solo tendrás que comparar, no se si esto te servirá pero es la idea que se me ocurre, la otra de ir recuperando de una tabla y buscar en otra el final es pesado para la máquina, las BBDD no se especialmente rápidas.

Espero que te sea de ayuda
__________________
Siempre inmerso en nuevos proyectos.

Cuando estoy activo puedes verme en //LiveCoding
  #3 (permalink)  
Antiguo 21/01/2014, 15:36
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 10 años, 11 meses
Puntos: 4
Respuesta: Comparar registros de dos tablas

Gracias por responder.
Mañana probare si da resultado o no.
Despues de ese SELECT, comparo con un array, no?

Es que no he entendido bien esta parte
(r.IDPregunta = p.IDPregunta)

Eso que ordena exactamente?
  #4 (permalink)  
Antiguo 21/01/2014, 16:43
 
Fecha de Ingreso: septiembre-2008
Ubicación: Valencia
Mensajes: 160
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Comparar registros de dos tablas

Si, simplemente miras que el array resultado de la búsqueda, con los campos de respuesta y respuesta correcta.

Código PHP:
$busqueda mysql_query($sql);
while(
$resultado mysql_fetch_assoc($busqueda)){
 if(
$resultado['Respuesta'] == $resultado['Correcta'] )
{
$acierto++;
}

__________________
Siempre inmerso en nuevos proyectos.

Cuando estoy activo puedes verme en //LiveCoding
  #5 (permalink)  
Antiguo 21/01/2014, 16:53
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 10 años, 11 meses
Puntos: 4
Respuesta: Comparar registros de dos tablas

Perfecto, como imaginaba!!
Muchas gracias por tu ayuda!

Mañana cuando lo implemente contaré que tal me ha ido!!

Etiquetas: fecha, registros, select, sql, tabla, tablas, variable
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 05:53.