Le champ doit être déjà présent en base de données
Nous souhaitons importer des informations complémentaires à un client 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.
Pour ajouter le champ à la liste des champs disponibles dans le mapping d'import clients, cliquez sur le bouton de l'interface "Ajout de champ", puis saisissez les informations suivantes :
Quel est l'ID du champ ? : my_field (doit correspondre exactement au nom du champ dans la table)
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, et renseignez :
if ($switchObject == 'my_field' && !empty($newcustomer->id)) {
$sql = "SELECT *
FROM " . _DB_PREFIX_ . "my_table
WHERE id_customer=" . (int)$newcustomer->id;
$exist = Db::getInstance()->executeS($sql);
if (!empty($exist[0]["id_customer"])) {
$TODO[] = "UPDATE " . _DB_PREFIX_ . "my_table
SET " . $switchObject . "='" . pSQL($GLOBALS["import_value"], true) . "'
WHERE id_customer=" . (int)$newcustomer->id;
} else {
$TODO[] = "INSERT INTO " . _DB_PREFIX_ . "my_table(id_customer, " . $switchObject . ")
VALUES ('" . (int)$newcustomer->id . "','" . pSQL($GLOBALS["import_value"], true) . "')";
}
}
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.