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']; }); ?>
Calculando estadísticas de velocidad y actualizando perfiles históricos en el servidor.