112 lines
3.8 KiB
PHP
112 lines
3.8 KiB
PHP
<?php
|
|
require_once '../includes/conexionBD.php';
|
|
|
|
class Pregunta {
|
|
private ?int $idPregunta;
|
|
private int $idCategoria;
|
|
private string $nombrePregunta;
|
|
private array $respuestas;
|
|
|
|
public function __construct(int $idCategoria = 0, string $nombrePregunta = "", ?int $idPregunta = null) {
|
|
$this->idPregunta = $idPregunta;
|
|
$this->idCategoria = $idCategoria;
|
|
$this->nombrePregunta = $nombrePregunta;
|
|
$this->respuestas = [];
|
|
}
|
|
|
|
public function getIdPregunta(): ?int { return $this->idPregunta; }
|
|
|
|
public function getIdCategoria(): int { return $this->idCategoria; }
|
|
public function setIdCategoria(int $idCategoria): void { $this->idCategoria = $idCategoria; }
|
|
|
|
public function getNombrePregunta(): string { return $this->nombrePregunta; }
|
|
public function setNombrePregunta(string $nombrePregunta): void { $this->nombrePregunta = $nombrePregunta; }
|
|
|
|
public function getRespuestas(): array { return $this->respuestas; }
|
|
|
|
public function guardar() {
|
|
$conexion = conexionBD();
|
|
|
|
if (is_array($conexion)) {
|
|
return $conexion;
|
|
}
|
|
|
|
try {
|
|
$sql = "INSERT INTO pregunta (idCategoria, nombrePregunta) VALUES (:idCat, :texto)";
|
|
$stmt = $conexion->prepare($sql);
|
|
|
|
$stmt->execute([
|
|
':idCat' => $this->idCategoria,
|
|
':texto' => $this->nombrePregunta
|
|
]);
|
|
|
|
$this->idPregunta = (int)$conexion->lastInsertId();
|
|
|
|
return [
|
|
'exito' => 'Pregunta guardada correctamente',
|
|
'exito_tecnico' => $this->idPregunta
|
|
];
|
|
|
|
} catch (PDOException $error) {
|
|
return [
|
|
'error' => 'Ocurrió un error al guardar la pregunta.',
|
|
'error_tecnico' => $error->getMessage()
|
|
];
|
|
}
|
|
}
|
|
|
|
public function cargarRespuestas() {
|
|
if ($this->idPregunta === null) return;
|
|
|
|
$conexion = conexionBD();
|
|
|
|
if (is_array($conexion)) {
|
|
return $conexion;
|
|
}
|
|
|
|
try {
|
|
$sql = "SELECT idRespuesta, nombreRespuesta, correcta FROM respuesta WHERE idPregunta = :idPreg";
|
|
$stmt = $conexion->prepare($sql);
|
|
$stmt->execute([':idPreg' => $this->idPregunta]);
|
|
|
|
$this->respuestas = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
} catch (PDOException $error) {
|
|
return [
|
|
'error' => 'Ocurrió un error al cargar las respuestas.',
|
|
'error_tecnico' => $error->getMessage()
|
|
];
|
|
}
|
|
}
|
|
|
|
public static function obtenerPorCategoria(int $idCategoria, int $limite = 10) {
|
|
$conexion = conexionBD();
|
|
|
|
if (is_array($conexion)) {
|
|
return $conexion;
|
|
}
|
|
|
|
try {
|
|
$sql = "SELECT * FROM pregunta WHERE idCategoria = :idCat ORDER BY RAND() LIMIT :limite";
|
|
$stmt = $conexion->prepare($sql);
|
|
|
|
$stmt->bindValue(':idCat', $idCategoria, PDO::PARAM_INT);
|
|
$stmt->bindValue(':limite', $limite, PDO::PARAM_INT);
|
|
$stmt->execute();
|
|
|
|
$preguntas = [];
|
|
while ($datos = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
|
$preg = new Pregunta((int)$datos['idCategoria'], $datos['nombrePregunta'], (int)$datos['idPregunta']);
|
|
$preg->cargarRespuestas();
|
|
$preguntas[] = $preg;
|
|
}
|
|
return $preguntas;
|
|
|
|
} catch (PDOException $error) {
|
|
return [
|
|
'error' => 'Ocurrió un error al obtener las preguntas aleatorias.',
|
|
'error_tecnico' => $error->getMessage()
|
|
];
|
|
}
|
|
}
|
|
} |