<?php
// Incluir el archivo de conexión
include('../connection.php');
// Recuperar parámetros de la solicitud AJAX
$ccosto = $_GET['ccosto'] ?? '';
$descripcion = $_GET['descripcion'] ?? '';
$search = isset($_GET['q']) ? $_GET['q'] : '';
$field = $_GET['field'] ?? ''; // 'descripcion' o 'cargo'
$search_term = "%" . $search . "%";
$data = [];
$sql = "";
$params = [];
$types = "";
if ($field === 'descripcion' && !empty($ccosto)) {
// 1. Obtener Descripciones únicas basadas en Centro de Costo
$sql = "SELECT DISTINCT D_ccosto
FROM ccosto
WHERE Id_ccosto = ?
AND D_ccosto LIKE ?
ORDER BY D_ccosto ASC";
$params = [$ccosto, $search_term];
$types = "ss";
} elseif ($field === 'cargo' && !empty($ccosto) && !empty($descripcion)) {
// 2. Obtener Cargos únicos basados en Centro de Costo Y Descripción
$sql = "SELECT DISTINCT cargo
FROM ccosto
WHERE Id_ccosto = ?
AND D_ccosto = ?
AND cargo LIKE ?
ORDER BY cargo ASC";
$params = [$ccosto, $descripcion, $search_term];
$types = "sss";
}
if ($sql) {
$stmt = $con->prepare($sql);
// Bindear los parámetros dinámicamente
$stmt->bind_param($types, ...$params);
$stmt->execute();
$result = $stmt->get_result();
// Determinar la columna a devolver
$column_name = ($field === 'descripcion') ? 'D_ccosto' : 'cargo';
while ($row = $result->fetch_assoc()) {
$item_value = $row[$column_name];
// Formato requerido por Select2: id y text
$data[] = [
'id' => $item_value, // El valor real a enviar/almacenar
'text' => $item_value // Lo que se muestra al usuario
];
}
$stmt->close();
}
// Cerrar la conexión
mysqli_close($con);
// Devolver la respuesta en formato JSON
header('Content-Type: application/json');
echo json_encode(['results' => $data]);
?>