From 9d59a9cc7c3f56c6e62b70caa9e3b043fc38f3f7 Mon Sep 17 00:00:00 2001 From: dbvictor2002 Date: Fri, 2 Oct 2026 12:40:01 +0200 Subject: [PATCH] Subir archivos a "/" --- PartidaModelo.php | 37 +++++++++++++++ resultados.php | 112 +++++--------------------------------------- vistaResultados.php | 72 ++++++++++++++++++++++++++++ 3 files changed, 120 insertions(+), 101 deletions(-) create mode 100644 PartidaModelo.php create mode 100644 vistaResultados.php diff --git a/PartidaModelo.php b/PartidaModelo.php new file mode 100644 index 0000000..0221972 --- /dev/null +++ b/PartidaModelo.php @@ -0,0 +1,37 @@ +conexion = $conexion; + } + + // Obtiene los jugadores mapeados en la partida actual + public function obtenerJugadoresPartida($idPartida) { + $stmt = $this->conexion->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]); + return $stmt->fetchAll(PDO::FETCH_ASSOC); + } + + // Obtiene las respuestas guardadas por un usuario específico + public function obtenerRespuestasUsuario($idPartida, $idUsuario) { + $stmtRespuestas = $this->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' => $idUsuario]); + return $stmtRespuestas->fetchAll(PDO::FETCH_ASSOC); + } +} diff --git a/resultados.php b/resultados.php index 1c82ba8..e9aa2c5 100644 --- a/resultados.php +++ b/resultados.php @@ -1,6 +1,8 @@ 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); +// Instanciamos el modelo +$modelo = new PartidaModelo($conexion); +// Obtenemos datos crudos del modelo +$listaJugadoresRaw = $modelo->obtenerJugadoresPartida($idPartida); $primerosEnAcertar = $_SESSION['primeros_en_acertar'][$idPartida] ?? []; $jugadoresFinales = []; $equiposFinales = []; -// Respuestas de velocidad (+2 o +1) procesadas en la capa de la vista +// Procesamiento de la lógica de negocio (puntos y velocidad) 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); + $respuestasUsuario = $modelo->obtenerRespuestasUsuario($idPartida, $idU); $aciertos = 0; $puntosTotalesJugador = 0; @@ -52,6 +39,7 @@ foreach ($listaJugadoresRaw as $jugador) { $aciertos++; $idPxp = $resp['idPartidaxPregunta']; + // Regula si es el más rápido (+2) o normal (+1) if (isset($primerosEnAcertar[$idPxp]) && $primerosEnAcertar[$idPxp] === $idU) { $puntosTotalesJugador += 2; } else { @@ -76,86 +64,8 @@ foreach ($listaJugadoresRaw as $jugador) { $equiposFinales[$idE]['puntos'] += $puntosTotalesJugador; } +// Ordenaciones de rankings 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.

-
-
- - - - - - +require_once __DIR__ . '/vistas/vistaResultados.php'; \ No newline at end of file diff --git a/vistaResultados.php b/vistaResultados.php new file mode 100644 index 0000000..80e0e0b --- /dev/null +++ b/vistaResultados.php @@ -0,0 +1,72 @@ + + + + + + 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