Hallo zusammen, wir haben eine Liste (.csv) mit Benutzerdaten aus einem anderem Shopsystem. Wir möchten gerne deren Login (Mailadresse) und sowas wie Straße, Ort etc. importieren. Wie können wir dieses vornehmen? Oder gibt es nur die Möglichkeit das die Benutzer sich komplett neu registrieren?
korrekt. Es gibt keinen CSV-Import für Kundendaten. Ob man die per API importieren kann, weiß ich aber nicht.
Ich empfehle da einen professionellen Programmierer ranzulassen, welcher sich optimalerweise auch bereits mit gambio auskennt. Für den Import in die Datenbank sind nämlich viele Dinge zu beachten, u.a. das die Kundenadressen im Adressbuch liegen und die ID der Standardadresse des Kunden dann entsprechend korrekt in der Kundentabelle hinterlegt ist usw. Das muss mit Sinn und Verstand gemacht werden. LG + viel Erfolg Peter
Ja haben wir. Wir sind dabei das neue System (Gambio) aufzubereiten und dann irgendwann das alte (Joomla + Joomshopping) abzuschalten.
Dann braucht es eigentlich nur ein kleines bis mittleres PHP Script / Programm, welches die Datensätze aus Datenbank alt ausliest und in Datenbank neu korrekt einträgt und dokumentiert welche Datensätze der alten Datenbank bereits abgearbeitet wurden. Ist, aus meiner Sicht, einfacher als über den Umweg der csv. So könnte man eine Synchronisation schaffen, welche bis zum eigentlichen Switch auf den neuen gambio Shop, die Kundenkonten zwischen alt und neu abgleicht und aktualisiert (falls 5 Minuten vor Eurem geplanten Switch noch ein neues Kundenkonto angelegt wird - habt ihr es dann auch mit im neuen Shop).
Hier ein Auszug eines Programms, welches ich einmal geschrieben habe um Kundenkonten in gambio anzulegen, vielleicht nutzt es Euch etwas bzw. der Person die es Euch realisiert: PHP: <div class="card mb-3"> <div class="card-header text-center"> <h3>Kundendaten - Erstellung des Kundenkontos</h3> </div> <div class="card-body"><?php$mailvorhandeneinlesen = mysqli_query($link, "SELECT customers_email_address FROM customers WHERE customers_email_address = '$email'");if(mysqli_num_rows($mailvorhandeneinlesen)>=1) {echo '<div class="alert alert-danger" role="alert">';echo '<i class="fas fa-times-circle" style="color: #D53343"></i> Email existiert bereits im System';echo '<button type="button" class="btn btn-dark ml-2" onclick="goBack()">Zurück zur letzten Seite</button>';echo '</div>';$savebuttonanzeige = 'style="display:none"';?><script>function goBack() { window.history.back();}</script><?php}else {$savebuttonanzeige = '';$timestamp = time();$jetzt = date("Y-m-d H:i:s", $timestamp);$dobplaceholder = '1000-01-01 00:00:00'; // ersetzen $passwordhash = ''; // hier etwas eintragen $inkundentabelleeintragen = mysqli_query ($link, "INSERT INTO customers (customers_id, customers_cid, customers_vat_id, customers_vat_id_status, customers_warning, customers_status, customers_gender, customers_firstname, customers_lastname, customers_dob, customers_email_address, customers_default_address_id, customers_telephone, customers_fax, customers_password, customers_newsletter, customers_newsletter_mode, member_flag, delete_user, account_type, password_request_key, payment_unallowed, shipping_unallowed, refferers_id, customers_date_added, customers_last_modified) VALUES ( NULL, NULL, NULL, '0', NULL, '2', '".$gender."', '".$vorname."', '".$nachname."', '".$dobplaceholder."', '".$email."', '0', '".$telefon."', NULL, '".$passwordhash."', NULL, '0', '0', '1', '0', '', '', '', '0', '".$jetzt."', '".$jetzt."' );"); if($inkundentabelleeintragen) { echo '<div class="alert alert-success" role="alert">'; echo '<i class="fas fa-check-circle" style="color: #27A243"></i> Kundenkonto erfolgreich angelegt'; echo '</div>'; } else { echo '<div class="alert alert-danger" role="alert">'; echo '<i class="fas fa-times-circle" style="color: #D53343"></i> Kundenkonto konnte nicht angelegt werden. FEHLER!'; echo '</div>'; } ?> </div></div><div class="card mb-3"> <div class="card-header text-center"> <h3>Kundendaten - Neue Kundennummer</h3> </div> <div class="card-body"> <?php $neuekundennummerabfragen = mysqli_query($link, "SELECT customers_id FROM customers WHERE customers_email_address = '$email'"); while($row = mysqli_fetch_array($neuekundennummerabfragen)) { $kundennummer = $row['customers_id']; echo '<div class="alert alert-info" role="alert">'; echo '<i class="fas fa-user-plus"></i> Die neue Kundennummer lautet: <b>'.$kundennummer.'</b>'; echo '</div>'; $inkundeninfotabelleeintragen = mysqli_query ($link, "INSERT INTO customers_info (customers_info_id, customers_info_date_of_last_logon, customers_info_number_of_logons, customers_info_date_account_created, customers_info_date_account_last_modified, global_product_notifications) VALUES ('".$kundennummer."', NULL, '0', '".$jetzt."', '".$jetzt."', '0' );"); if($inkundeninfotabelleeintragen) { echo '<div class="alert alert-success" role="alert">'; echo '<i class="fas fa-check-circle" style="color: #27A243"></i> Kundeninfotabelleneintrag erfolgreich angelegt'; echo '</div>'; } else { echo '<div class="alert alert-danger" role="alert">'; echo '<i class="fas fa-times-circle" style="color: #D53343"></i> Kundeninfotabelleneintrag konnte nicht angelegt werden. FEHLER!'; echo '</div>'; } } ?> </div></div><div class="card mb-3"> <div class="card-header text-center"> <h3>Kundendaten - Adressbucheintrag</h3> </div> <div class="card-body"> <?php if(empty($firmenname)){ $gewerbetreibend = '0'; } else { $gewerbetreibend = '1'; } $adressbucheintrag = mysqli_query ($link, "INSERT INTO address_book (address_book_id, customers_id, entry_gender, entry_company, entry_firstname, entry_lastname, entry_street_address, entry_house_number, entry_additional_info, entry_suburb, entry_postcode, entry_city, entry_state, entry_country_id, entry_zone_id, address_date_added, address_last_modified, address_class, customer_b2b_status) VALUES ( NULL, '".$kundennummer."', '".$gender."', '".$firmenname."', '".$vorname."', '".$nachname."', '".$strasse."', '', '', NULL, '".$plz."', '".$ort."', '', '81', '0', '".$jetzt."', '".$jetzt."', '', '".$gewerbetreibend."' );"); if($adressbucheintrag) { echo '<div class="alert alert-success" role="alert">'; echo '<i class="fas fa-check-circle" style="color: #27A243"></i> Adressbucheintrag erfolgreich angelegt'; echo '</div>'; } else { echo '<div class="alert alert-danger" role="alert">'; echo '<i class="fas fa-times-circle" style="color: #D53343"></i> Adressbucheintrag konnte nicht angelegt werden. FEHLER!'; echo '</div>'; } $adressbuchnummerabfragen = mysqli_query($link, "SELECT address_book_id FROM address_book WHERE customers_id = '$kundennummer'"); while($row=mysqli_fetch_assoc($adressbuchnummerabfragen)){ $abid = $row['address_book_id']; $kundenkontoupdaten = mysqli_query($link, "UPDATE customers SET customers_default_address_id = '".$abid."' WHERE customers_id = '$kundennummer'"); if($kundenkontoupdaten) { echo '<div class="alert alert-success" role="alert">'; echo '<i class="fas fa-check-circle" style="color: #27A243"></i> Adressbucheintrag mit Kundenkonto erfolgreich verknüpft'; echo '</div>'; } else { echo '<div class="alert alert-danger" role="alert">'; echo '<i class="fas fa-times-circle" style="color: #D53343"></i> Adressbucheintrag konnte nicht mit dem Kundenkonto verknüpft werden. FEHLER!'; echo '</div>'; } } } ?> </div></div> Das ist kein standalone lauffähiges Script und auch nur ein Ausschnitt. Soll nur zeigen wie man Kundenkonten in gambio anlegt (auf meine, direkte Art )
Da sollte man aber lieber die API nehmen um die Kunden wieder anzulegen. Für solche Fälle gibt es die API ja nun extra.
das geht natürlich auch, zumindest in dem Anwendungsfall. https://developers.gambio.de/docs/4.8.0.0/rest/gambio-gx3-api/reference/customers/create-customers/ Ich mach es meist anders, weil ich zuviele Anwendungsfälle habe, wo die API mir nicht die gewünschten Funktionen liefert. mein Code-Snippet oben ist Teil einer Wawi und dort eines kompletten Rechnungs- und Kassenprogramms, welches direkt auf gambio zugreift. So haben wir alles unter einem Dach. LG Peter