Add export functionality for products with images to CSV
This commit is contained in:
78
export.php
Normal file
78
export.php
Normal 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>";
|
||||
?>
|
||||
Reference in New Issue
Block a user