83 lines
2.5 KiB
PHP
83 lines
2.5 KiB
PHP
<?php
|
|
include("db.php");
|
|
|
|
$nombre_archivo = "productos.csv";
|
|
$archivo = fopen($nombre_archivo, "r");
|
|
|
|
if ($archivo !== FALSE) {
|
|
|
|
fgetcsv($archivo, 1000, ";");
|
|
|
|
$importados = 0;
|
|
$errores = 0;
|
|
$fila = 1;
|
|
|
|
while (($datos = fgetcsv($archivo, 1000, ";")) !== FALSE) {
|
|
$fila++;
|
|
|
|
//CAPTURA DE DATOS
|
|
$id = trim($datos[0]);
|
|
$nombre = trim($datos[1]);
|
|
$precio = trim($datos[2]);
|
|
$categoria = trim($datos[3]);
|
|
$imagen = trim($datos[4]);
|
|
$activo = isset($datos[5]) ? trim($datos[5]) : 1;
|
|
$stock = (isset($datos[6]) && trim($datos[6]) !== '') ? trim($datos[6]) : 0;
|
|
|
|
// --- VALIDACIONES DE DATOS ---
|
|
|
|
if (empty($nombre) || empty($categoria)) {
|
|
echo "Error en fila $fila: El nombre o la categoría están vacíos.<br>";
|
|
$errores++;
|
|
continue;
|
|
}
|
|
|
|
if (!is_numeric($precio) || (float)$precio <= 0) {
|
|
echo "Error en fila $fila: El precio '$precio' no es un número válido.<br>";
|
|
$errores++;
|
|
continue;
|
|
}
|
|
|
|
if (!is_numeric($stock) || (int)$stock < 0) {
|
|
echo "Error en fila $fila: El stock '$stock' debe ser un número entero mayor o igual a cero.<br>";
|
|
$errores++;
|
|
continue;
|
|
}
|
|
$stock = (int)$stock;
|
|
|
|
$stmt = $conexion->prepare("
|
|
INSERT INTO productos (id, nombre, precio, categoria, imagen, activo, stock)
|
|
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
ON DUPLICATE KEY UPDATE
|
|
nombre = VALUES(nombre),
|
|
precio = VALUES(precio),
|
|
categoria = VALUES(categoria),
|
|
imagen = VALUES(imagen),
|
|
activo = VALUES(activo),
|
|
stock = VALUES(stock)
|
|
");
|
|
|
|
$stmt->bind_param("isdssii", $id, $nombre, $precio, $categoria, $imagen, $activo, $stock);
|
|
|
|
if ($stmt->execute()) {
|
|
$importados++;
|
|
} else {
|
|
echo "Error de BD en fila $fila: " . $conexion->error . "<br>";
|
|
$errores++;
|
|
}
|
|
}
|
|
|
|
fclose($archivo);
|
|
|
|
echo "<hr>";
|
|
echo "<h3>Resumen del proceso:</h3>";
|
|
echo "Productos procesados (Nuevos o Actualizados): $importados <br>";
|
|
if ($errores > 0) {
|
|
echo "Filas con errores: $errores <br>";
|
|
}
|
|
echo "<br><a href='productos.php'>Ver catálogo en la web</a>";
|
|
|
|
} else {
|
|
echo "No se pudo encontrar el archivo $nombre_archivo";
|
|
}
|
|
?>
|