Add buscadorSala recupera las salas de la bbdd

This commit is contained in:
2026-09-25 12:59:55 +02:00
parent 8d6272c664
commit 6beb655e83
3 changed files with 552 additions and 106 deletions
+54 -37
View File
@@ -169,7 +169,7 @@ class Partida
} catch (PDOException $error) {
return [
"error" => "Ocurrió un error al recuperar las preguntas de la partida.",
'error_tecnico' => $error->getMessage()
'error_tecnico' => $error->getMessage()
];
}
}
@@ -332,17 +332,18 @@ class Partida
];
}
}
/**
/**
* Vincula un equipo a esta partida en la tabla intermedia 'equipoxpartida'.
* Permite registrar qué grupos están participando en este torneo.
*/
public function registrarEquipoEnPartida($idEquipo) {
public function registrarEquipoEnPartida($idEquipo)
{
$conexion = conexionBD(); // Obtenemos la conexión modular del proyecto
if (is_array($conexion)) {
return $conexion; // Si hay error en la conexión, lo devuelve
}
try {
// Preparamos la consulta para insertar la relación en la tabla intermedia real
$consulta = $conexion->prepare("
@@ -351,12 +352,12 @@ class Partida
VALUES
(:idPartida, :idEquipo)
");
// Vinculamos los parámetros con el objeto de la partida actual y el equipo recibido
$consulta->bindParam(":idPartida", $this->idPartida);
$consulta->bindParam(":idEquipo", $idEquipo);
$consulta->execute();
return [
"exito" => "El equipo se vinculó a la partida correctamente.",
"exito_tecnico" => $conexion->lastInsertId()
@@ -374,13 +375,14 @@ class Partida
* Obtiene todos los equipos que están compitiendo en esta partida.
* Es útil para mostrar la lista de rivales antes de empezar a responder.
*/
public function getEquiposParticipantes() {
public function getEquiposParticipantes()
{
$conexion = conexionBD();
if (is_array($conexion)) {
return $conexion;
}
try {
// Hacemos un INNER JOIN para traer los nombres de los equipos desde la tabla intermedia
$consulta = $conexion->prepare("
@@ -394,10 +396,10 @@ class Partida
WHERE exp.idPartida = :idPartida
ORDER BY e.nombreEquipo ASC
");
$consulta->bindParam(":idPartida", $this->idPartida);
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC); // Devuelve el array con los equipos rivales
} catch (PDOException $error) {
return [
@@ -411,42 +413,57 @@ class Partida
* Obtiene todos los jugadores reales (Usuarios) que están jugando en esta partida.
* Utiliza la tabla 'equipoxusuario' en SQL para cruzar los datos.
*/
public function getJugadoresDeLaPartida() {
public function getJugadoresDeLaPartida()
{
$conexion = conexionBD();
if (is_array($conexion)) {
return $conexion;
}
try {
// Cruza la partida con los equipos, y luego los equipos con los usuarios
// para saber los nombres de todas las personas que están jugando el torneo.
$consulta = $conexion->prepare("
SELECT DISTINCT
u.idUsuario,
u.nombreUsuario,
u.email,
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
");
$consulta->bindParam(":idPartida", $this->idPartida);
SELECT DISTINCT
u.idUsuario,
u.nombreUsuario,
u.email,
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
ORDER BY e.nombreEquipo ASC,
u.nombreUsuario ASC
");
$consulta->bindParam(
":idPartida",
$this->idPartida
);
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $error) {
return [
"error" => "Ocurrió un error al obtener la lista de jugadores.",
"error_tecnico" => $error->getMessage()
"error" =>
"Ocurrió un error al obtener la lista de jugadores.",
"error_tecnico" =>
$error->getMessage()
];
}
}
}