File "fetch_data.php"
Full Path: C:/wamp64/www/Identifica_Piku/Personal/Ccostos/fetch_data.php
File size: 4.01 KB
MIME-type: text/x-php
Charset: utf-8
<?php
// fetch_data.php - ADAPTADO PARA USAR $con EN LUGAR DE $conn
// Manejo de errores
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Incluir conexión
include("../../connection.php");
// Usar $con en lugar de $conn (ya que connection.php define $con)
$conn = $con; // Asignamos $con a $conn para mantener compatibilidad
// Verificar conexión
if (!isset($conn) || !($conn instanceof mysqli)) {
http_response_code(500);
echo json_encode([
"draw" => intval($_REQUEST['draw'] ?? 0),
"recordsTotal" => 0,
"recordsFiltered" => 0,
"data" => [],
"error" => "Conexión a la base de datos no establecida"
]);
exit();
}
// Continuar con el resto del código...
$request = $_REQUEST;
$col = array(
0 => 'Id_ccosto',
1 => 'D_ccosto',
2 => 'cargo'
);
$sql = "SELECT * FROM ccosto";
$query = mysqli_query($conn, $sql);
if (!$query) {
http_response_code(500);
echo json_encode([
"draw" => intval($request['draw'] ?? 0),
"recordsTotal" => 0,
"recordsFiltered" => 0,
"data" => [],
"error" => "Error en consulta: " . mysqli_error($conn)
]);
exit();
}
$totalData = mysqli_num_rows($query);
$totalFilter = $totalData;
$sql = "SELECT * FROM ccosto WHERE 1=1";
// Búsqueda
if (!empty($request['search']['value'])) {
$search_value = mysqli_real_escape_string($conn, $request['search']['value']);
$sql .= " AND (D_ccosto LIKE '%" . $search_value . "%' ";
$sql .= " OR cargo LIKE '%" . $search_value . "%') ";
}
$query = mysqli_query($conn, $sql);
if (!$query) {
http_response_code(500);
echo json_encode([
"draw" => intval($request['draw'] ?? 0),
"recordsTotal" => 0,
"recordsFiltered" => 0,
"data" => [],
"error" => "Error en consulta de filtro: " . mysqli_error($conn)
]);
exit();
}
$totalFilter = mysqli_num_rows($query);
// Ordenamiento
$order_column = isset($col[$request['order'][0]['column']]) ? $col[$request['order'][0]['column']] : 'Id_ccosto';
$order_dir = in_array(strtoupper($request['order'][0]['dir']), ['ASC', 'DESC']) ? $request['order'][0]['dir'] : 'ASC';
$sql .= " ORDER BY " . $order_column . " " . $order_dir . " ";
// Paginación
$start = isset($request['start']) ? intval($request['start']) : 0;
$length = isset($request['length']) ? intval($request['length']) : 10;
$sql .= " LIMIT " . $start . ", " . $length;
$query = mysqli_query($conn, $sql);
if (!$query) {
http_response_code(500);
echo json_encode([
"draw" => intval($request['draw'] ?? 0),
"recordsTotal" => 0,
"recordsFiltered" => 0,
"data" => [],
"error" => "Error en consulta final: " . mysqli_error($conn)
]);
exit();
}
$data = array();
while ($row = mysqli_fetch_array($query)) {
$subdata = array();
// COLUMNA 1: Aquí SÍ dejamos 'Id_ccosto' para que el usuario VEA el código (ej: 257P)
$subdata[] = htmlspecialchars($row['Id_ccosto']);
// COLUMNA 2: Descripción
$subdata[] = htmlspecialchars($row['D_ccosto']);
// COLUMNA 3: Cargo
$subdata[] = htmlspecialchars($row['cargo']);
// COLUMNA 4: Botones
// AQUÍ ESTÁ EL CAMBIO: Usamos $row['id'] (el número 1, 2, 3) para el data-id
$subdata[] = '<a href="javascript:void(0);" class="btn btn-sm btn-info p-2 m-1 editBtn" data-id="' . htmlspecialchars($row['id']) . '">Editar</a>
<a href="javascript:void(0);" class="btn btn-sm btn-danger p-2 m-1 btnDelete" data-id="' . htmlspecialchars($row['id']) . '">Eliminar</a>';
$data[] = $subdata;
}
$json_data = array(
"draw" => intval($request['draw']),
"recordsTotal" => intval($totalData),
"recordsFiltered" => intval($totalFilter),
"data" => $data
);
echo json_encode($json_data);
// No cerrar conexión ya que $con podría ser usado por otros scripts
// mysqli_close($conn);
?>