Add export functionality for products with images to CSV

This commit is contained in:
2025-09-09 17:44:22 +02:00
parent 602e6a92fe
commit d7fe875eb9
3 changed files with 478 additions and 2 deletions

78
export.php Normal file
View File

@@ -0,0 +1,78 @@
<?php
// Konfiguracja bazy
$host = "localhost";
$db = "interblue_sklep";
$user = "interblue_sklep";
$pass = "2212+#++@pSVSb4";
$prefix = "ps_"; // zmień jeśli masz inny prefix
// Katalog docelowy
$exportDir = __DIR__ . "/export_images";
if (!is_dir($exportDir)) {
mkdir($exportDir, 0777, true);
}
// Tryb testowy podaj EAN jednego produktu, np. "5901234567890"
// Jeśli pusty, poleci dla wszystkich produktów
$testEan = "";
// Połączenie z DB
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Pobierz produkty
if ($testEan !== "") {
$sql = "SELECT p.id_product, p.ean13
FROM {$prefix}product p
WHERE p.ean13 = :ean";
$stmt = $pdo->prepare($sql);
$stmt->execute(['ean' => $testEan]);
$products = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "Tryb testowy eksportuję tylko produkt o EAN: {$testEan}\n<br>";
} else {
$sql = "SELECT p.id_product, p.ean13
FROM {$prefix}product p
WHERE p.ean13 IS NOT NULL AND p.ean13 <> ''";
$products = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
echo "Eksportuję wszystkie produkty\n<br>";
}
foreach ($products as $prod) {
$ean = $prod['ean13'];
$id_product = (int)$prod['id_product'];
// Pobierz zdjęcia produktu
$sqlImg = "SELECT id_image
FROM {$prefix}image
WHERE id_product = :id_product
ORDER BY position ASC";
$stmt = $pdo->prepare($sqlImg);
$stmt->execute(['id_product' => $id_product]);
$images = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (!$images) {
echo "Brak zdjęć dla EAN: {$ean}\n<br>";
continue;
}
$i = 1;
foreach ($images as $img) {
$id_image = (int)$img['id_image'];
// Ścieżka do pliku (PrestaShop struktura katalogów np. 123 -> /1/2/3/123.jpg)
$path = implode('/', str_split((string)$id_image)) . "/" . $id_image . ".jpg";
$src = __DIR__ . "/img/p/" . $path;
if (file_exists($src)) {
$dest = $exportDir . "/" . $ean . "_" . $i . ".jpg";
copy($src, $dest);
echo "Zapisano: $dest\n<br>";
} else {
echo "Brak pliku: $src\n<br>";
}
$i++;
}
}
echo "✅ Eksport zakończony.\n<br>";
?>