34849-vm/get_product_details.php
2026-02-12 04:46:17 +00:00

58 lines
2.2 KiB
PHP

<?php
header('Content-Type: application/json');
require_once 'db/config.php';
$response = ['success' => false, 'message' => 'No se proporcionó un identificador de producto.'];
$pdo = db();
$product = null;
// Handle search by SKU (barcode)
if (isset($_GET['codigo_barras'])) {
$sku = trim($_GET['codigo_barras']);
if (!empty($sku)) {
try {
// Search by the 'sku' column
$stmt = $pdo->prepare("SELECT id, nombre, sku FROM products WHERE sku = :sku");
$stmt->execute(['sku' => $sku]);
$product = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$product) {
$response['message'] = 'Producto no encontrado con el SKU/código de barras proporcionado.';
// Log the failed SKU attempt to a file
$log_message = date('[Y-m-d H:i:s]') . " Intento fallido de búsqueda con SKU: " . $sku . PHP_EOL;
file_put_contents('sku_failures.log', $log_message, FILE_APPEND);
}
} catch (PDOException $e) {
// Don't expose detailed SQL errors to the client
error_log('Database Error: ' . $e->getMessage());
$response['message'] = 'Error al consultar la base de datos.';
}
} else {
$response['message'] = 'El SKU/código de barras no puede estar vacío.';
}
// Handle search by internal ID
} elseif (isset($_GET['id'])) {
$product_id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
if ($product_id) {
try {
$stmt = $pdo->prepare("SELECT id, nombre, sku FROM products WHERE id = :id");
$stmt->execute(['id' => $product_id]);
$product = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$product) {
$response['message'] = 'Producto no encontrado con el ID proporcionado.';
}
} catch (PDOException $e) {
error_log('Database Error: ' . $e->getMessage());
$response['message'] = 'Error al consultar la base de datos.';
}
} else {
$response['message'] = 'ID de producto inválido.';
}
}
if ($product) {
$response = ['success' => true, 'product' => $product];
}
echo json_encode($response);
?>