Pour créer un ticket support, commencez par une recherche

Import Produits : importer un champ dans une table externe (insert et update)

Pré-requis

Le champ doit être déjà présent en base de données

Objectif

Nous souhaitons importer des informations complémentaires à un produit depuis un fichier CSV vers le champ d'une table. Si l'information existe déjà dans la table, elle est mise à jour. Si elle n'existe pas, elle est créée.

Mise en place

Pour ajouter le champ à la liste des champs disponibles dans le mapping d'import produits, cliquez sur le bouton de l'interface "Ajout de champ", puis saisissez les informations suivantes :

SC crée le champ, il faut maintenant renseigner dans la grille :

ID : my_field
Nom : my_field


Dans le panneau des Propriétés Avancées à droite :

- sélectionner le menu Processus d'import des déclinaisons, et ajoutez:

if (in_array($switchObject, ['my_field'])) {
    $value = $GLOBALS['import_value'];
    $id_prd = (!empty($id_product) ? (int)$id_product : (int)$newprod->id);
    
    $sql = 'SELECT COUNT(*) 
            FROM ' . _DB_PREFIX_ . 'my_table
            WHERE id_product=' . $id_prd;
    if (Db::getInstance()->getValue($sql)) {
        Db::getInstance()->execute('UPDATE ' . _DB_PREFIX_ . 'my_table
                                        SET `' . $switchObject . "`='" . pSQL($value) . "'
                                        WHERE id_product=" . $id_prd);
    } else {
        Db::getInstance()->execute('INSERT INTO ' . _DB_PREFIX_ . 'my_table (id_product, `' . $switchObject . '`)
                                         VALUES (' . $id_prd . ',"' . pSQL($value) . '")');
    }
}

Ce code est à adapter à vos besoins.

Fermez la fenêtre d'édition des champs personnalisés et utilisez le champ dans votre mapping d'import.



Articles associés