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_lang = (int) $getIDlangByISO[$mappingData['CSV2DBOptions'][$firstLineData[$key]]];
    if (!empty($id_lang))
    {
        $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