74 lines
2.3 KiB
PHP
74 lines
2.3 KiB
PHP
<?php
|
|
function construirSentenciaInsert($tabla, $datos) {
|
|
// Filtramos campos que no queremos en el INSERT
|
|
$camposExcluidos = ['accion'];
|
|
$camposInsertar = array_diff_key($datos, array_flip($camposExcluidos));
|
|
|
|
// Preparamos los nombres de las columnas y los marcadores de posición
|
|
$columnas = array_keys($camposInsertar);
|
|
$marcadores = array_fill(0, count($columnas), '?');
|
|
|
|
// Construimos la sentencia SQL
|
|
$sql = "INSERT INTO $tabla ([" . implode('], [', $columnas) . "]) VALUES (" . implode(', ', $marcadores) . ")";
|
|
|
|
// Preparamos los parámetros
|
|
$parametros = array_values($camposInsertar);
|
|
|
|
return ['sql' => $sql, 'parametros' => $parametros];
|
|
}
|
|
|
|
function construirSentenciaUpdate($tabla, $datos) {
|
|
// Filtramos campos que no queremos en el UPDATE
|
|
$camposExcluidos = ['accion', 'id'];
|
|
$camposActualizar = array_diff_key($datos, array_flip($camposExcluidos));
|
|
|
|
// Construimos la parte SET de la sentencia
|
|
$setCampos = [];
|
|
$parametros = [];
|
|
foreach ($camposActualizar as $campo => $valor) {
|
|
// Usamos corchetes en lugar de backticks para SQL Server
|
|
$setCampos[] = "[$campo] = ?";
|
|
$parametros[] = $valor;
|
|
}
|
|
|
|
// Construimos la sentencia SQL
|
|
$sql = "UPDATE $tabla SET " . implode(', ', $setCampos) . " WHERE id = ?";
|
|
|
|
// Añadimos el id al final de los parámetros
|
|
$parametros[] = $datos['id'];
|
|
|
|
return ['sql' => $sql, 'parametros' => $parametros];
|
|
}
|
|
|
|
function normalizarAlojamiento(array $datos): array {
|
|
|
|
// Cursos que tienen selector alojamiento_*
|
|
$cursos = ['bp', 'b1', 'b2', 'b3'];
|
|
|
|
foreach ($cursos as $c) {
|
|
$kA = "alojamiento_$c";
|
|
$kI = "alojamiento_inicio_$c";
|
|
$kF = "alojamiento_fin_$c";
|
|
|
|
// Si no viene alojamiento_* no tocamos nada
|
|
if (!array_key_exists($kA, $datos)) continue;
|
|
|
|
$valA = strtoupper(trim((string)$datos[$kA]));
|
|
|
|
// Si NO hay alojamiento => forzamos NULL en inicio/fin (aunque no vengan)
|
|
if ($valA === 'N' || $valA === '') {
|
|
$datos[$kI] = null;
|
|
$datos[$kF] = null;
|
|
continue;
|
|
}
|
|
|
|
// Si SI hay alojamiento => si no vienen fechas, al menos dejamos null (o podés validar)
|
|
if ($valA === 'S') {
|
|
if (!array_key_exists($kI, $datos) || trim((string)$datos[$kI]) === '') $datos[$kI] = null;
|
|
if (!array_key_exists($kF, $datos) || trim((string)$datos[$kF]) === '') $datos[$kF] = null;
|
|
}
|
|
}
|
|
|
|
return $datos;
|
|
}
|