Jump to content
xt:Commerce Community Forum

Kunden Import


meierj

Recommended Posts

Hallo zusammen,

ich habe dass ganze Forum abgerast, leider immer nur was gefunden wie man Artikel importiert.

Leider nichts ?ber Kundenimport.....

Gibt es da was ? Script, Anleitung o. ?.

Und wie kann ich dass Passwort eines bestehenden Kunden von Hand ?ndern ?

Bzw. es ?ndern, und ihn dann dar?ber benachrichtigen.

Bin dankbar f?r jede Hilfe.

Danke Euch allen, gruss J.

Link to comment
Share on other sites

  • 3 weeks later...
  • Replies 74
  • Created
  • Last Reply

Hallo, ich schlie?e mich mal hier auch mit an.

Ich suche da auch was in dieser Richtung irgendwie um Kundendaten zu importieren. Mindestens muss ich aber ca 1000 Kundenemails ins newsletter/Rundschreiben rein bekommen und per Hand bei phpmyadmin werde ich ja nie fertig. :stupid: wenn es da so was wie das Artikel Im/Exportmodul nur f?r Kunden also ein "- Kundendaten Im/Export" Modul w?re was Zauberhaftes!

das muss ja nur aufgesetzt werden auf die Datenbank und die richtigen spalten auslesen und evtl. nach dem exportieren sch?n bequem die Kunden ?berarbeitet/hinzugef?gt oder auch nur ge?ndert wieder einspielen bzw. ?berschreiben. Programmieren kann ich leider nicht.

Also mir w?rde es auch viel weiter helfen und meinem Gesch?ft nat?rlich auch.

Danke schon im voraus :dafuer:

Link to comment
Share on other sites

Hallo,

hab da eine Idee. Hab meinen Shop jetzt erstmal lokal zum Testen installiert.

Wie w?rs mit folgender L?sung:

1) Daten im Shop anlegen und Backup machen!

2) Mysql-Datenbank mit Software auslesen und in Access-Datenbank speichern

3) Diese Datenbank als Grundlage nehmen und mit Kunden-Daten erweitern.

4) Access-Datenbank wieder in mysql einspielen.

Aber Vorsicht. Weiss nicht, wie die Daten verkn?pft sind.

ciao

Link to comment
Share on other sites

  • 6 months later...
  • 2 months later...

Was ist denn die einfachste L?sung Kunden per import in den Shop zu bekommen ?

Ich bin n?hmlich davon ausgegangen, da? es ?ber die Importfunktion geht.

Da hab ich mich wohl get?uscht.

Ich wollte CVS Dateien aus Bayorganizer (Kundendaten) von Ebay in den Shop ?bernehmen.

Hmmm ...

Link to comment
Share on other sites

Hallo,

m?chte auch meine bestehenden Kundenadressen in den XT-Shop importieren. Da es keine (derzeit) M?glicheit gibt m?ssen wir wohl selbst ran.

Sind Verkn?pfungen bekannt z.B. von Adresse, Kundennummern etc. die wir beachten m?ssen, wenn ja welche.

Vielen Dank im Voraus.

jaguar2005 :sad: :sad:

Link to comment
Share on other sites

  • 1 month later...

Fr?hestens in einer der n?chsten Versionen.

Es gibt enorm viel wichtigere Dinge.

Gibts bereits einen Termin? Ich w?sste ehrlichgesagt kaum was wichtigeres als eine einfache Kunden import Funktion. Bietet heutzutage ja jeder 0815 Shop standartm?ssig an.

Link to comment
Share on other sites

Ich kenne die Updatescripts. Nur funktionieren diese bei meinem 3er Version nicht. Es zereisst mir f?rmlich den ganzen Shop. Also blieb mir nichts anderes ?brig als eine saubere 4er aufzusetzen und die Daten h?ppchenweise zu ?bernehmen. Die Kunden habe ich nun ?bernommen, jedoch nicht die ganzen Bestellungen. Ich sehe bald keine andere M?glichkeit, als jedem Kunden ein neues Passwort zuzuteilen und in seinem Namen nochmals alle Eink?ufe zu erledigen. Funktion nicht wichtig, kann man sagen, wenn alles so funktioniert wie es sollte. In meinem Fall w?re diese Funktion jedoch 1. prio. Anderen geht es ja anscheinend nicht anders. Ihr solltet euch Fragen f?r wen diese Funktion keine prio hat. F?r euch oder f?r eure Kunden?

Link to comment
Share on other sites

s zereisst mir f?rmlich den ganzen Shop.

ein datenbank update script f?r version 3.0.3 -> 3.0.4 kann den shop nicht zerreisen.

wenn probleme damit bestehen -> post im forum, daf?r gibt es den support.

das DB update von 3.0.3 auf 3.0.4 erledigt sich in wenigen sekunden, dann hat man eine fertige 3.0.4 datenbank, und kann diese problemlos in eine frisch aufgesetzte 3.0.4 einspielen.

In meinem Fall w?re diese Funktion jedoch 1. prio.

klar, jeder der eine neue funktion ben?tigt, sieht diese als 1. priorit?t und must have feature.

Ihr solltet euch Fragen f?r wen diese Funktion keine prio hat. F?r euch oder f?r eure Kunden?

das eine funktion programmiert wird, h?ngt nicht davon ab ob es 5-10 kunden w?nschen, sondern eine funktion muss von mehren hundert kunden ben?tigt werden damit sich die entwicklung rentiert. (dies ist bei dieser funktion nicht der fall -> funktion keine priorit?t in der entwicklung).

Link to comment
Share on other sites

  • 1 year later...

Da ist aber wieder jemand sehr überheblich. Ein Kundenimport ist immer wichtig, vor allem für arme, treue XT:Benutzer, deren Sponserenvertrag abgelaufen ist und dennoch auf eine neue Version setzen möchten. Bei mir hat das Updaten mit dem Script aber auch nicht funktioniert!.. tzz von wegen in wenigen Sekunden. Das Script zeigte "alles grün" aber der Schop war total zerschossen, Benutzer fehlten usw.! Zum Glück hatte ich ein aktuelles SQL-Backup. Nach unzähligen Fehlversuchen habe ich nun den Shop ganz neu installiert und die Artikel weitgehend neu angelegt, möchte nun wehnigstens die Kunden einschließlich Zugangsdaten und getägtigte Einkäufe übernehmen. Warum das nicht wichtig sein soll kann ich nachvollziehen!

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...

Da ich soetwas gerade entwickelt habe, stelle ich es euch gerne zur verfügung!

Damit habe ich gerade ca. 4900 Kunden über eine csv-datei importiert und jedem eine eMail geschickt mit einem neuen Passwort.


<?php


define('GZIP_COMPRESSION','false');


include ('includes/application_top.php');


require_once (DIR_FS_INC.'xtc_get_country_list.inc.php');

require_once (DIR_FS_INC.'xtc_validate_email.inc.php');

require_once (DIR_FS_INC.'xtc_encrypt_password.inc.php');

require_once (DIR_FS_INC.'xtc_get_geo_zone_code.inc.php');

require_once (DIR_FS_INC.'xtc_write_user_info.inc.php');


function getpass($laenge=10)

{

	$newpass = "";

    	$string="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";


    	mt_srand((double)microtime()*1000000);


    	for ($i=1; $i <= $laenge; $i++)

    	{

    		$newpass .= substr($string, mt_rand(0,strlen($string)-1), 1);

    	}

	return $newpass;

}


$lines = 0;

$lines_ok = 0;


$importfile="kunden_import.csv";


$fh = fopen($importfile, "r") or die ("Kann Datei nicht lesen.");


while(!feof($fh))

{

	// zeile einlesen & werte zuweisen

	$zeile=fgets($fh);

	list($anrede, $firstname, $lastname, $company, $geburtsdatum, $street_address, $lkz, $postcode, $city, $suburb, $telephone, $fax, $email_address, $password) = split(";", $zeile);

	$lines+=1;


	// neues zufallspasswort erstelllen.

	$password = getpass(10);


	// vorhandene Daten aufbereiten.

	switch($anrede)

	{

		case "01":

			$gender = "m";

			break;


		case "02":

			$gender = "f";

			break;


		default:

			$gender = "m";

	}


	// http://www.didihome.de/html/tab-lkz.htm

	// Problemkinder: BAL, EI


	switch(strtoupper($lkz))

	{

		case "D":

			$lkz = "DE";

			break;


		case "A":

			$lkz = "AT";

			break;


		case "F":

			$lkz = "FR";

			break;


		case "WD":

			$lkz = "DM";

			break;


		case "CDN":

			$lkz = "CA";

			break;


		case "I":

			$lkz = "IT";

			break;


		case "N":

			$lkz = "NO";

			break;


		case "U":

			$lkz = "UY";

			break;


		// ?? P = POLEN!?

		case "P":

			$lkz = "PL";

			break;


		case "J":

			$lkz = "JP";

			break;


		case "E":

			$lkz = "ES";

			break;


		case "H":

			$lkz = "HU";

			break;


		case "AUS":

			$lkz = "AU";

			break;


		case "FL":

			$lkz = "LI";

			break;


		case "S":

			$lkz = "SE";

			break;


		case "L":

			$lkz = "LU";

			break;


		case "RB":

			$lkz = "BW";

			break;


		case "FIN":

			$lkz = "FI";

			break;


		case "RI":

			$lkz = "ID";

			break;


		case "B":

			$lkz = "BE";

			break;


		case "SGP":

			$lkz = "SG";

			break;


		case "EST":

			$lkz = "EE";

			break;


		case "IRL":

			$lkz = "IE";

			break;


		case "RUS":

			$lkz = "RU";

			break;


		case "SLO":

			$lkz = "SI";

			break;


		case "USA":

			$lkz = "US";

			break;

	}	

	$country_query = xtc_db_query("SELECT * FROM `countries` WHERE `countries_iso_code_2` = '".strtoupper($lkz)."'");

	$country_data = xtc_db_fetch_array($country_query);

	$country = $country_data['countries_id'];


	if(!is_numeric($country_data['countries_id']))

	{

		echo "   <b>ERROR:</b> LKZ_CONVERT_ERROR<br>\n";

		echo "lkz=".$lkz." countries_id=".$country_data['countries_id']. " countries_name=".$country_data['countries_name']."<br>\n";

	}


	if ($geburtsdatum != ".000000000" && $geburtsdatum != "")

	{

		list($jahr, $monat, $tag) = sscanf($geburtsdatum,"%4d%2d%2d.%d");


		$dob = sprintf("%02d.%02d.%4d",$tag,$monat,$jahr);

		//echo $geburtsdatum . " = " . $dob ."<br>\n";

	}

	else

		$dob='';


	// sonnstige variablen

	$customers_status = DEFAULT_CUSTOMERS_STATUS_ID;

	$newsletter = "0";

	$do_not_report = false;


	// daten in db eintragen

	require_once(DIR_WS_CLASSES.'vat_validation.php');


	$vatID = new vat_validation($vat, '', '', $country);

	$customers_status = $vatID->vat_info['status'];

	$customers_vat_id_status = $vatID->vat_info['vat_id_status'];

	$error = $vatID->vat_info['error'];


	if($error==1)

	{


		//$messageStack->add('create_account', ENTRY_VAT_ERROR);

		echo "   <b>ERROR:</b> ENTRY_VAT_ERROR<br>\n";

		$error = true;


	}


	if(!is_numeric($country_data['countries_id']))

		$error = true;


	$email_exists = false;

	$check_email_query = xtc_db_query("select count(*) as total from ".TABLE_CUSTOMERS." where customers_email_address = '".xtc_db_input($email_address)."' and account_type = '0'");

	$check_email = xtc_db_fetch_array($check_email_query);


	if ($check_email['total'] > 0) {


		$email_exists = true;

	}


	if($email_exists == true)

	{

		$error = true;

		$do_not_report = true;


		//$messageStack->add('create_account', ENTRY_EMAIL_ADDRESS_ERROR_EXISTS);

		//echo "   <b>ERROR:</b> ENTRY_EMAIL_ADDRESS_ERROR_EXISTS<br>\n";

	}

	elseif (strlen($email_address) < ENTRY_EMAIL_ADDRESS_MIN_LENGTH)

	{


		$error = true;

		//$messageStack->add('create_account', ENTRY_EMAIL_ADDRESS_ERROR);

		echo "   <b>ERROR:</b> ENTRY_EMAIL_ADDRESS_ERROR<br>\n";


	}


	elseif (xtc_validate_email($email_address) == false)

	{


		$error = true;

		//$messageStack->add('create_account', ENTRY_EMAIL_ADDRESS_CHECK_ERROR);

		echo "   <b>ERROR:</b> ENTRY_EMAIL_ADDRESS_CHECK_ERROR<br>\n";

/*

	        $fp3 = fopen("kunden_import_mail-check-fail.csv", "a");

	        fputs($fp3, $zeile);

	        fclose ($fp3);

*/


	}


	if($dob != '')

	{

		if (checkdate(substr(xtc_date_raw($dob), 4, 2), substr(xtc_date_raw($dob), 6, 2), substr(xtc_date_raw($dob), 0, 4)) == false)

		{


			$error = true;

			echo "   <b>ERROR:</b> ENTRY_DATE_OF_BIRTH_ERROR<br>\n";


			//$messageStack->add('create_account', ENTRY_DATE_OF_BIRTH_ERROR);


		}

	}


	if($error != true)

	{

		$lines_ok += 1;


		$sql_data_array = array ('customers_vat_id' => $vat, 'customers_vat_id_status' => $customers_vat_id_status, 'customers_status' => $customers_status, 'customers_firstname' => $firstname, 'customers_lastname' => $lastname, 'customers_email_address' => $email_address, 'customers_telephone' => $telephone, 'customers_fax' => $fax, 'customers_newsletter' => $newsletter, 'customers_password' => xtc_encrypt_password($password),'customers_date_added' => 'now()','customers_last_modified' => 'now()');



		$sql_data_array['customers_gender'] = $gender;

		$sql_data_array['customers_dob'] = xtc_date_raw($dob);

		xtc_db_perform(TABLE_CUSTOMERS, $sql_data_array);

		$user_id = xtc_db_insert_id();


		//xtc_write_user_info($user_id);


		$sql_data_array = array ('customers_id' => $user_id, 'entry_firstname' => $firstname, 'entry_lastname' => $lastname, 'entry_street_address' => $street_address, 'entry_postcode' => $postcode, 'entry_city' => $city, 'entry_country_id' => $country,'address_date_added' => 'now()','address_last_modified' => 'now()');




		$sql_data_array['entry_gender'] = $gender;

		$sql_data_array['entry_company'] = $company;


		if (ACCOUNT_SUBURB == 'true')

			$sql_data_array['entry_suburb'] = $suburb;



		if (ACCOUNT_STATE == 'true')

		{


			if ($zone_id > 0)

			{


				$sql_data_array['entry_zone_id'] = $zone_id;

				$sql_data_array['entry_state'] = '';


			}

			else

			{

				$sql_data_array['entry_zone_id'] = '0';

				$sql_data_array['entry_state'] = $state;

			}

		}



		xtc_db_perform(TABLE_ADDRESS_BOOK, $sql_data_array);

		$address_id = xtc_db_insert_id();


		xtc_db_query("update ".TABLE_CUSTOMERS." set customers_default_address_id = '".$address_id."' where customers_id = '".(int) $user_id."'");


		xtc_db_query("insert into ".TABLE_CUSTOMERS_INFO." (customers_info_id, customers_info_number_of_logons, customers_info_date_account_created) values ('".(int) $user_id."', '0', now())");



		// create smarty elements


		$smarty = new Smarty;


		$smarty->assign('GENDER', $gender);

		$smarty->assign('FIRSTNAME', $firstname);


		$smarty->assign('LASTNAME', $lastname);

		$smarty->assign('EMAIL', $email_address);

		$smarty->assign('PASSWORT', $password);


		$smarty->caching = false;

		$txt_mail_customer = $smarty->fetch(DIR_FS_CATALOG.'kunden_import_mail.txt');


		$mail_subject = "Unser neuer Onlineshop";


/*

		echo "<pre>\n";

		echo $txt_mail_customer;

		echo "</pre>\n";

*/

		// mail versenden

		xtc_php_mail(STORE_OWNER_EMAIL_ADDRESS, STORE_OWNER, $email_address, $firstname.' '.$lastname, '', STORE_OWNER_EMAIL_ADDRESS, STORE_OWNER, '', '', $mail_subject, '', $txt_mail_customer);


	}

	else

	{

		if(!$do_not_report==true)

		{

			echo "<b color=\"red\">fehler beim anlegen von $firstname, $lastname, $company, $email_address</b><br>\n";

			echo "<b>------------------------------------------------------------------------------------------------------</b><br>\n";

		}

	}


	flush();


}

fclose($fh);


echo "$lines_ok von $lines Daten importiert!";


include ('includes/application_bottom.php');

?>


Und das Mail-Template:


{if $GENDER == 'f'}

Sehr geehrte Frau {$LASTNAME},

{else}

Sehr geehrter Herr {$LASTNAME},

{/if}


seit 01.02.2007 ist unser neuer Onlineshop unter [url=http://www.modellsport.de/shop/]Modellsport.de[/url] erreichbar.


Da Sie bereits Kunde bei uns sind, haben wir Ihre Daten in den neuen Shop übernommen. Sie können sich mit folgenden Login-Daten anmelden: 


Benutzer: {$EMAIL}

Passwort: {$PASSWORT}


Bitte überprüfen Sie bei Gelegenheit, ob die Angaben, wie Name, Adresse usw. noch korrekt sind und geben uns Bescheid, wenn sich irgendwelche Fehler eingeschlichen oder Daten geändert haben sollten.


Wir danken für Ihre Mithilfe und verbleiben


mit freundlichen Grüßen

MODELLSPORT VERLAG GMBH

- Vertrtiebsleitung -


Thomas Wäldele

Es ist zwar kein allround script, aber man kann es entsprechend anpassen und dient deswegen mal als grundlage.

Link to comment
Share on other sites

  • 2 weeks later...

Da ich soetwas gerade entwickelt habe, stelle ich es euch gerne zur verfügung!

Damit habe ich gerade ca. 4900 Kunden über eine csv-datei importiert und jedem eine eMail geschickt mit einem neuen Passwort.

deswegen mal als grundlage.

wie muss denn die CSV Datei aufgebaut sein um die Kunden zu importieren ?

DANKE

Link to comment
Share on other sites

das eine funktion programmiert wird, h?ngt nicht davon ab ob es 5-10 kunden w?nschen, sondern eine funktion muss von mehren hundert kunden ben?tigt werden damit sich die entwicklung rentiert. (dies ist bei dieser funktion nicht der fall -> funktion keine priorit?t in der entwicklung).

Hallo,

nur weil nicht alle, die so ein Skript benötigen, diesen Thread finden und sich dann gegebenfalls im Forum anmelden und posten, bedeutet nicht dass diese Funktion nicht benötigt wird.

Macht einmal eine Umfrage auf eurer Startseite und ihr werdet euch wundern wieviele Leute das Tool wünschen.

Eine Entwicklung dieser Schnittstelle hat für euch OBERSTE Priorität. Ihr braucht nur zu überlegen welches die 3 meistverwendetsten Shopsysteme sind, diese dann per Importfunktion anbieten und eure Kassen werden ganz enorm klingeln - Zauberwort Kundenaquirierung.

Die wenigsten fangen bei 0 mit einer Shopentwicklung an sondern haben bestehende Systeme. Selbst wenn man ganz frisch anfängt bedeutet das noch nicht, dass die Erstentscheidung auf xtc fällt. In beiden Fällen ermöglicht Ihr euren potentiellen Kunden keinen Umstieg außer der Eigenprogrammierung von Skripts.

mfg

m-fred

ein osc user der eigentlich auf xtc umsteigen möchte.

Link to comment
Share on other sites

  • 3 weeks later...

Ein Import von Kunden ist auch mir genauso wichtig wie für Artikel. Das Script von ThomasCr sieht sehr gut aus. Nur wie ist die CSV-Datei aufgebaut und ist der Import auch für 3.0.4 geeignet?

Wie die Datei aufgebaut ist, sieht man in den zwei Zeilen:

$zeile=fgets($fh);

list($anrede, $firstname, $lastname, $company, $geburtsdatum, $street_address, $lkz, $postcode, $city, $suburb, $telephone, $fax, $email_address, $password) = split(";", $zeile);

Der list Befehlt, ordnet die Werte (aus einem Array) den Variablen zu. Der split Befehl erstellt aus der eingelesenen Zeile ein Array anhand des Semikolons...

Link to comment
Share on other sites

Was für eine Diskussion?!

Wie soll man denn überhaupt ohne einen Import der Kunden-Daten auskommen, wenn man nicht gerade neu eröffnet?!

Ich will aus verschiedenen Gründen auf xtCommerce umsteigen und habe es dazu seit kurzem auf einem Entwicklungs-Server laufen. Grundvoraussetzung für den Umstieg ist aber in jedem Fall, dass ich knapp 20.000 Adressen übernehmen kann - nicht nur, damit die Kunden nicht wieder von vorne anfangen müssen, sondern auch, damit die Kundenverwaltung in Anbindung an unser Warenwirtschaftsystem funktioniert (Stichwort: Kundennummer).

Als ich gesehen habe, dass xtCommerce die Funktion (im Gegensatz zu unserem bisherigen Shop-System) nicht bietet, dachte ich auch ans Selbst-Schreiben - aber dann stieß ich hier auf diesen Thread und das Script von ThomasCr.

DANKE DAFÜR!

Link to comment
Share on other sites

  • 3 weeks later...

Hallo,

habe mittlerweile rausgefunden wie ich es importiere.

Bekomme leider diese Fehlermeldung:

[B]ERROR:[/B] LKZ_CONVERT_ERROR

lkz=lkz countries_id= countries_name=

[B]ERROR:[/B] ENTRY_EMAIL_ADDRESS_CHECK_ERROR

[B]ERROR:[/B] ENTRY_DATE_OF_BIRTH_ERROR

[B]fehler beim anlegen von firstname, lastname, company, email_address[/B]

[B]------------------------------------------------------------------------------------------------------[/B]

[B]ERROR:[/B] LKZ_CONVERT_ERROR

lkz= countries_id= countries_name=

[B]ERROR:[/B] ENTRY_EMAIL_ADDRESS_ERROR

[B]fehler beim anlegen von , , , [/B]

[B]------------------------------------------------------------------------------------------------------[/B]

1 von 3 Daten importiert!

und die Email die an den Kunden geht ist leer, nur der Betreff ist da!

Aber die Daten werden trotzdem alle geschrieben!

Kann mir jemand sagen was das ist? ich weiss nicht mehr was ich falsch mache :confused:

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.


×
  • Create New...