diff --git a/resultados.php b/resultados.php index 1f571e3..8adb6dc 100644 --- a/resultados.php +++ b/resultados.php @@ -1,156 +1,156 @@ -prepare(" - SELECT u.idUsuario, u.nombreUsuario, e.idEquipo, e.nombreEquipo - FROM equipoxpartida exp - INNER JOIN equipoxusuario exu ON exp.idEquipo = exu.idEquipo - INNER JOIN usuario u ON exu.idUsuario = u.idUsuario - INNER JOIN equipo e ON exu.idEquipo = e.idEquipo - WHERE exp.idPartida = :idPartida -"); -$stmt->execute([':idPartida' => $idPartida]); -$listaJugadoresRaw = $stmt->fetchAll(PDO::FETCH_ASSOC); - -$primerosEnAcertar = $_SESSION['primeros_en_acertar'][$idPartida] ?? []; - -$jugadoresFinales = []; -$equiposFinales = []; - -// Respuestas de velocidad (+2 o +1) -foreach ($listaJugadoresRaw as $jugador) { - $idU = (int)$jugador['idUsuario']; - $idE = (int)$jugador['idEquipo']; - - $stmtRespuestas = $conexion->prepare(" - SELECT ra.idPartidaxPregunta, r.correcta - FROM respuestaalmacenada ra - INNER JOIN respuesta r ON ra.idRespuesta = r.idRespuesta - INNER JOIN partidaxpregunta pxp ON ra.idPartidaxPregunta = pxp.idPartidaxPregunta - WHERE pxp.idPartida = :idPartida AND ra.idUsuario = :idUsuario - "); - $stmtRespuestas->execute([':idPartida' => $idPartida, ':idUsuario' => $idU]); - $respuestasUsuario = $stmtRespuestas->fetchAll(PDO::FETCH_ASSOC); - - $aciertos = 0; - $puntosTotalesJugador = 0; - - foreach ($respuestasUsuario as $resp) { - if ((int)$resp['correcta'] === 1) { - $aciertos++; - $idPxp = $resp['idPartidaxPregunta']; - - // Si el ID de usuario coincide con el primero guardado de esa pregunta se lleva 2 puntos - if (isset($primerosEnAcertar[$idPxp]) && $primerosEnAcertar[$idPxp] === $idU) { - $puntosTotalesJugador += 2; - } else { - $puntosTotalesJugador += 1; - } - } - } - - $jugadoresFinales[] = [ - 'nombre' => $jugador['nombreUsuario'], - 'equipo' => $jugador['nombreEquipo'], - 'aciertos' => $aciertos, - 'puntos' => $puntosTotalesJugador - ]; - - if (!isset($equiposFinales[$idE])) { - $equiposFinales[$idE] = [ - 'nombre' => $jugador['nombreEquipo'], - 'puntos' => 0 - ]; - } - $equiposFinales[$idE]['puntos'] += $puntosTotalesJugador; -} - -// Ordenar según la puntuación final de mayor a menor -usort($jugadoresFinales, function($a, $b) { return $b['puntos'] <=> $a['puntos']; }); -usort($equiposFinales, function($a, $b) { return $b['puntos'] <=> $a['puntos']; }); -?> - - - - - - - Resultados - Trivial - - - - - -
-

⌛ Esperando a que todos los jugadores terminen...

-

Calculando estadísticas de velocidad y actualizando perfiles históricos en el servidor.

-
-
- - - - - +prepare(" + SELECT u.idUsuario, u.nombreUsuario, e.idEquipo, e.nombreEquipo + FROM equipoxpartida exp + INNER JOIN equipoxusuario exu ON exp.idEquipo = exu.idEquipo + INNER JOIN usuario u ON exu.idUsuario = u.idUsuario + INNER JOIN equipo e ON exu.idEquipo = e.idEquipo + WHERE exp.idPartida = :idPartida +"); +$stmt->execute([':idPartida' => $idPartida]); +$listaJugadoresRaw = $stmt->fetchAll(PDO::FETCH_ASSOC); + +$primerosEnAcertar = $_SESSION['primeros_en_acertar'][$idPartida] ?? []; + +$jugadoresFinales = []; +$equiposFinales = []; + +// Respuestas de velocidad (+2 o +1) +foreach ($listaJugadoresRaw as $jugador) { + $idU = (int)$jugador['idUsuario']; + $idE = (int)$jugador['idEquipo']; + + $stmtRespuestas = $conexion->prepare(" + SELECT ra.idPartidaxPregunta, r.correcta + FROM respuestaalmacenada ra + INNER JOIN respuesta r ON ra.idRespuesta = r.idRespuesta + INNER JOIN partidaxpregunta pxp ON ra.idPartidaxPregunta = pxp.idPartidaxPregunta + WHERE pxp.idPartida = :idPartida AND ra.idUsuario = :idUsuario + "); + $stmtRespuestas->execute([':idPartida' => $idPartida, ':idUsuario' => $idU]); + $respuestasUsuario = $stmtRespuestas->fetchAll(PDO::FETCH_ASSOC); + + $aciertos = 0; + $puntosTotalesJugador = 0; + + foreach ($respuestasUsuario as $resp) { + if ((int)$resp['correcta'] === 1) { + $aciertos++; + $idPxp = $resp['idPartidaxPregunta']; + + // Si el ID de usuario coincide con el primero guardado de esa pregunta se lleva 2 puntos + if (isset($primerosEnAcertar[$idPxp]) && $primerosEnAcertar[$idPxp] === $idU) { + $puntosTotalesJugador += 2; + } else { + $puntosTotalesJugador += 1; + } + } + } + + $jugadoresFinales[] = [ + 'nombre' => $jugador['nombreUsuario'], + 'equipo' => $jugador['nombreEquipo'], + 'aciertos' => $aciertos, + 'puntos' => $puntosTotalesJugador + ]; + + if (!isset($equiposFinales[$idE])) { + $equiposFinales[$idE] = [ + 'nombre' => $jugador['nombreEquipo'], + 'puntos' => 0 + ]; + } + $equiposFinales[$idE]['puntos'] += $puntosTotalesJugador; +} + +// Ordenar según la puntuación final de mayor a menor +usort($jugadoresFinales, function($a, $b) { return $b['puntos'] <=> $a['puntos']; }); +usort($equiposFinales, function($a, $b) { return $b['puntos'] <=> $a['puntos']; }); +?> + + + + + + + Resultados - Trivial + + + + + +
+

⌛ Esperando a que todos los jugadores terminen...

+

Calculando estadísticas de velocidad y actualizando perfiles históricos en el servidor.

+
+
+ + + + + \ No newline at end of file