Se asignan 10 preguntas a la partida al crearse #3

Merged
profesor merged 1 commits from asignar_preguntas into main 2026-09-29 09:56:07 +02:00
3 changed files with 80 additions and 1 deletions
Showing only changes of commit e97586b033 - Show all commits
+22
View File
@@ -1,3 +1,4 @@
<?php
require_once __DIR__ . '/../includes/conexionBD.php';
@@ -466,4 +467,25 @@ class Partida
];
}
}
public function contar()
{
$conexion = conexionBD();
if (is_array($conexion)) {
return $conexion;
}
try {
$sql="SELECT COUNT(*) AS total FROM partida";
$consulta = $conexion->prepare($sql);
$consulta->execute();
return (int) $consulta->fetchColumn();
} catch (PDOException $error) {
return [
"error" => "Ocurrió un error al obtener el listado.",
'error_tecnico' => $error->getMessage()
];
}
}
}
+19
View File
@@ -1,3 +1,4 @@
<?php
require_once __DIR__ . '/../includes/conexionBD.php';
@@ -110,4 +111,22 @@ class Pregunta {
];
}
}
public static function getTodosIds()//devuelve solamente los id de todas las preguntas
{
$conexion = conexionBD();
if (is_array($conexion)) {
return $conexion;
}
try {
$consulta = $conexion->prepare("SELECT idPregunta FROM pregunta");
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_COLUMN);
} catch (PDOException $error) {
return [
"error" => "Ocurrió un error al obtener el listado.",
'error_tecnico' => $error->getMessage()
];
}
}
}
+39 -1
View File
@@ -6,6 +6,7 @@ require_once '../clases/ClasePartida.php';
require_once '../clases/ClaseEquipo.php';
require_once '../clases/ClaseEquipoxUsuario.php';
require_once '../clases/ClaseEquipoxPartida.php';
require_once '../clases/ClasePregunta.php';
switch ($_POST['orden']) {
@@ -119,6 +120,7 @@ switch ($_POST['orden']) {
}
$idPartida = (int)$resultadoPartida['exito_tecnico'];
$partida->idPartida = $idPartida;
/*
@@ -211,6 +213,42 @@ switch ($_POST['orden']) {
}
/*
* ==========================================
* 5. ASIGNAMOS 10 PREGUNTAS ALEATORIAS A LA PARTIDA
* ==========================================
*/
// Obtenemos todos los IDs de las preguntas
$listaPreguntas = Pregunta::getTodosIds();
$totalPreguntas = count($listaPreguntas);
// Guardamos las preguntas que ya hemos asignado
$preguntasAsignadas = [];
// Generamos 10 posiciones aleatorias sin repetir
while (count($preguntasAsignadas) < 10) {
// Generamos una posición aleatoria del array
$posicionAleatoria = rand(0, $totalPreguntas - 1);
// Obtenemos el ID real de la pregunta
$idPreguntaAleatoria = $listaPreguntas[$posicionAleatoria];
// Comprobamos que esa pregunta no haya sido asignada ya
if (!in_array($idPreguntaAleatoria, $preguntasAsignadas)) {
$preguntasAsignadas[] = $idPreguntaAleatoria;
// Asignamos el ID real de la pregunta a la partida
$partida->asignarPregunta($idPreguntaAleatoria);
}
}//fin shile
/*
* ==========================================
* TODO CORRECTO
@@ -218,7 +256,7 @@ switch ($_POST['orden']) {
*/
echo json_encode([
'exito' => 'Sala creada correctamente.',
'exito' => 'Sala creada correctamente. Preguntas preparadas.',
'idPartida' => $resultadoPartida['exito_tecnico'],
'idEquipo1' => $equipo1->idEquipo,
'idEquipo2' => $equipo2->idEquipo