Jump to content

Edit History

Stef43

Stef43

Bonjour,

merci pour votre réponse. Concernant l'export des produits j'ai fait ce fichier php qui a l'air de bien fonctionné:

<?php
header('Content-Type: application/xml; charset=utf-8');

try {
    $pdo = new PDO(
        'mysql:host=xxxxxxxxx.xxxxx.xx;port=3306;dbname=xxxxxxxx;charset=utf8mb4',
        'xxxxx',
        'xxxxxx',
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
    );
} catch (PDOException $e) {
    echo 'Erreur connexion : ' . htmlspecialchars($e->getMessage());
    exit;
}

echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
echo '<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">' . "\n";
echo "<channel>\n";
echo "  <title>Parasante+ - Flux Produits</title>\n";
echo "  <link>https://parasanteplus.fr</link>\n";
echo "  <description>Flux XML des produits de Parasante+ pour Google Merchant Center</description>\n";

$query = "
SELECT 
    p.id_product,
    pl.name,
    pl.description_short,
    p.price,
    p.weight,
    i.id_image,
    s.quantity,
    m.name AS brand
FROM ps_product p
JOIN ps_product_lang pl ON p.id_product = pl.id_product AND pl.id_lang = 1
JOIN ps_stock_available s ON s.id_product = p.id_product
LEFT JOIN ps_image i ON i.id_product = p.id_product AND i.cover = 1
LEFT JOIN ps_manufacturer m ON m.id_manufacturer = p.id_manufacturer
WHERE p.active = 1
LIMIT 1000
";

foreach ($pdo->query($query) as $row) {
    $id = (int)$row['id_product'];
    $name = htmlspecialchars($row['name']);
    $desc = htmlspecialchars(strip_tags($row['description_short']));
    $price = number_format((float)$row['price'], 2, '.', '') . ' EUR';
    $weight = (float)$row['weight'];
    $qty = (int)$row['quantity'];
    $availability = $qty > 0 ? 'in stock' : 'out of stock';
    $brand = htmlspecialchars($row['brand'] ?? 'Parasante+');

    $link = htmlspecialchars("https://parasanteplus.fr/index.php?id_product=$id&amp;controller=product");
    $image_link = $row['id_image']
        ? htmlspecialchars("https://parasanteplus.fr/img/p/".implode('/', str_split($row['id_image']))."/{$row['id_image']}.jpg")
        : '';

    echo "  <item>\n";
    echo "    <g:id>$id</g:id>\n";
    echo "    <g:title>$name</g:title>\n";
    echo "    <g:description>$desc</g:description>\n";
    echo "    <g:link>$link</g:link>\n";
    if ($image_link) {
        echo "    <g:image_link>$image_link</g:image_link>\n";
    }
    echo "    <g:condition>new</g:condition>\n";
    echo "    <g:availability>$availability</g:availability>\n";
    echo "    <g:price>$price</g:price>\n";
    if ($weight > 0) {
        echo "    <g:shipping_weight>{$weight} kg</g:shipping_weight>\n";
    }
    echo "    <g:brand>$brand</g:brand>\n";
    echo "  </item>\n";
}

echo "</channel>\n";
echo "</rss>\n";

 

Stef43

Stef43

Bonjour,

merci pour votre réponse. Concernant l'export des produits j'ai fait ce fichier php qui a l'air de bien fonctionné:

<?php
header('Content-Type: application/xml; charset=utf-8');

try {
    $pdo = new PDO(
        'mysql:host=db5016559111.hosting-data.io;port=3306;dbname=dbs13434396;charset=utf8mb4',
        'dbu106417',
        'Paykt.088@',
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
    );
} catch (PDOException $e) {
    echo 'Erreur connexion : ' . htmlspecialchars($e->getMessage());
    exit;
}

echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
echo '<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">' . "\n";
echo "<channel>\n";
echo "  <title>Parasante+ - Flux Produits</title>\n";
echo "  <link>https://parasanteplus.fr</link>\n";
echo "  <description>Flux XML des produits de Parasante+ pour Google Merchant Center</description>\n";

$query = "
SELECT 
    p.id_product,
    pl.name,
    pl.description_short,
    p.price,
    p.weight,
    i.id_image,
    s.quantity,
    m.name AS brand
FROM ps_product p
JOIN ps_product_lang pl ON p.id_product = pl.id_product AND pl.id_lang = 1
JOIN ps_stock_available s ON s.id_product = p.id_product
LEFT JOIN ps_image i ON i.id_product = p.id_product AND i.cover = 1
LEFT JOIN ps_manufacturer m ON m.id_manufacturer = p.id_manufacturer
WHERE p.active = 1
LIMIT 1000
";

foreach ($pdo->query($query) as $row) {
    $id = (int)$row['id_product'];
    $name = htmlspecialchars($row['name']);
    $desc = htmlspecialchars(strip_tags($row['description_short']));
    $price = number_format((float)$row['price'], 2, '.', '') . ' EUR';
    $weight = (float)$row['weight'];
    $qty = (int)$row['quantity'];
    $availability = $qty > 0 ? 'in stock' : 'out of stock';
    $brand = htmlspecialchars($row['brand'] ?? 'Parasante+');

    $link = htmlspecialchars("https://parasanteplus.fr/index.php?id_product=$id&amp;controller=product");
    $image_link = $row['id_image']
        ? htmlspecialchars("https://parasanteplus.fr/img/p/".implode('/', str_split($row['id_image']))."/{$row['id_image']}.jpg")
        : '';

    echo "  <item>\n";
    echo "    <g:id>$id</g:id>\n";
    echo "    <g:title>$name</g:title>\n";
    echo "    <g:description>$desc</g:description>\n";
    echo "    <g:link>$link</g:link>\n";
    if ($image_link) {
        echo "    <g:image_link>$image_link</g:image_link>\n";
    }
    echo "    <g:condition>new</g:condition>\n";
    echo "    <g:availability>$availability</g:availability>\n";
    echo "    <g:price>$price</g:price>\n";
    if ($weight > 0) {
        echo "    <g:shipping_weight>{$weight} kg</g:shipping_weight>\n";
    }
    echo "    <g:brand>$brand</g:brand>\n";
    echo "  </item>\n";
}

echo "</channel>\n";
echo "</rss>\n";

 

×
×
  • Create New...