<?php
// Este script es solo para depuración y no debe usarse en producción
// Colócalo en un archivo separado (debug-get-record.php) para identificar problemas

// Capturar la salida para mostrar exactamente lo que está sucediendo
ob_start();

// Incluir la conexión a la base de datos
require_once 'utils_database.php';

// Inicializar la conexión
$conn = Activarmysql();

// Obtener parámetros
$table = $_GET['table'] ?? '';
$id = $_GET['id'] ?? '';

// Validar parámetros
if (empty($table) || empty($id)) {
    echo "ERROR: Faltan parámetros. Se necesita 'table' e 'id'.\n";
    exit;
}

// Sanitizar entrada
$table = mysqli_real_escape_string($conn, $table);
$id = intval($id);

// Consulta para obtener el registro
$sql = "SELECT * FROM `$table` WHERE id = $id";
echo "SQL: $sql\n\n";

$result = mysqli_query($conn, $sql);

if ($result && mysqli_num_rows($result) > 0) {
    // Registro encontrado
    $data = mysqli_fetch_assoc($result);
    
    // Mostrar los datos crudos primero
    echo "DATOS CRUDOS:\n";
    print_r($data);
    echo "\n\n";
    
    // Intentar codificar a JSON
    $json = json_encode($data);
    
    // Verificar si hay errores de codificación
    if ($json === false) {
        echo "ERROR DE CODIFICACIÓN JSON: " . json_last_error_msg() . "\n";
        
        // Examinar cada campo para identificar problemas
        echo "\nANÁLISIS CAMPO POR CAMPO:\n";
        foreach ($data as $key => $value) {
            echo "Campo: $key | ";
            
            if (is_string($value)) {
                echo "Tipo: string | Longitud: " . strlen($value) . " | ";
                
                // Verificar codificación UTF-8
                if (!mb_check_encoding($value, 'UTF-8')) {
                    echo "NO es UTF-8 válido | ";
                    // Intentar encodear a UTF-8
                    $encoded = utf8_encode($value);
                    $encoded_json = json_encode($encoded);
                    echo "JSON después de utf8_encode: " . ($encoded_json !== false ? "OK" : "FALLO") . " | ";
                } else {
                    echo "Es UTF-8 válido | ";
                }
                
                // Verificar caracteres de control
                if (preg_match('/[\x00-\x1F\x7F]/', $value)) {
                    echo "Contiene caracteres de control | ";
                    // Mostrar 10 primeros caracteres hexadecimales
                    echo "Primeros bytes (hex): ";
                    for ($i = 0; $i < min(10, strlen($value)); $i++) {
                        echo bin2hex($value[$i]) . " ";
                    }
                } else {
                    echo "No contiene caracteres de control";
                }
            } else {
                echo "Tipo: " . gettype($value) . " | Valor: " . print_r($value, true);
            }
            
            // Intentar codificar este campo individual
            $field_json = json_encode($value);
            echo " | JSON individual: " . ($field_json !== false ? "OK" : "FALLO");
            
            echo "\n";
        }
    } else {
        // Mostrar el JSON generado
        echo "JSON CODIFICADO:\n";
        echo $json;
        echo "\n\n";
        
        // Mostrar JSON con diferentes opciones
        echo "JSON CON OPCIONES ADICIONALES:\n";
        echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_HEX_QUOT | JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_PRETTY_PRINT);
    }
} else {
    // Registro no encontrado
    echo "ERROR: Registro no encontrado.";
}

// Cerrar conexión
CerrarConexion($conn);

// Obtener la salida completa
$output = ob_get_clean();

// Mostrar la salida como texto plano
header('Content-Type: text/plain; charset=utf-8');
echo $output;
?>