"; echo "Feldname => Bedeutung
"; foreach($address as $key=>$val) { echo "$key => $val
"; } $header=implode(";",array_keys($address)); echo $header; exit(0); }; if ($_POST["ok"]) { $nun=time(); /* get DB instance */ $db=$_SESSION["db"]; //new myDB($login); $crm=checkCRM(); function ende($txt) { echo "Abbruch: $txt
"; exit(1); } $dir = "../users/"; clearstatcache (); //print_r($_FILES); $test=$_POST["test"]; if (!empty($_FILES["Datei"]["name"])) { $file=$_POST["ziel"]; if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$dir.$file.".csv")) { $file=false; echo "Upload von ".$_FILES["Datei"]["name"]." fehlerhaft. (".$_FILES["Datei"]["error"].")
"; } } else if (is_file($dir.$_POST["ziel"].".csv")) { $file=$_POST["ziel"]; } else { $file=false; } if (!$file) ende ("Kein Datenfile"); $trenner=($_POST["trenner"])?$_POST["trenner"]:","; if ($trenner=="other") { $trenner=trim($trennzeichen); if (substr($trenner,0,1)=="#") if (strlen($trenner)>1) $trenner=chr(substr($trenner,1)); } if (!file_exists($dir.$file.".csv")) ende("$file.csv nicht im Ordner oder leer"); if (!$db->chkcol($file)) ende("Importspalte kann nicht angelegt werden"); $employee=chkUsr($_SESSION["employee"]); if (!$employee) ende("Ungültiger User"); $kunde_fld = array_keys($address); //Zeichencodierung des Servers $tmpcode = $db->getServerCode(); //Leider sind die Benennungen vom Server anders als von mb_detect_encoding if ($tmpcode == "UTF8") { define("ServerCode","UTF-8"); } else if ($tmpcode == "LATIN9") { define("ServerCode","ISO-8859-15"); } else if ($tmpcode == "LATIN1") { define("ServerCode","ISO-8859-1"); } else { define("ServerCode",$tmpcode); } //Zeichensatz sollte gleich sein, sonst ist die Datenkonvertierung nutzlos //DB und LxO müssen ja nicht auf der gleichen Maschiene sein. if($tmpcode<>$db->getClientCode()) { $rc = $db->setClientCode($tmpcode); } // Zeichenkodierung File if ($_POST["encoding"] == "auto") { define("Auto",true); define("Translate",true); } else { define("Auto",false); if ($_POST["encoding"] == ServerCode) { define("Translate",false); } else { define("Translate",true); define("FileCode",$_POST["encoding"]); } } $f=fopen($dir.$file.".csv","r"); $zeile=fgets($f,1200); $infld=split($trenner,strtolower($zeile)); $first=true; $ok=true; foreach ($infld as $fld) { $fld = strtolower(trim(strtr($fld,array("\""=>"","'"=>"")))); if ($fld=="branche" && !$crm) { $in_fld[]=""; continue; }; if ($fld=="sw" && !$crm) { $in_fld[]=""; continue; }; $in_fld[]=$fld; } $j=0; $m=0; $zeile=fgetcsv($f,1200,$trenner); if ($ok) while (!feof($f)){ $i=0; $m++; $anrede=""; $Matchcode=""; $sql="insert into $file "; $keys="("; $vals=" values ("; $number=false; foreach($zeile as $data) { if (!in_array(trim($in_fld[$i]),$kunde_fld)) { if ($in_fld[$i]=="anrede") { $anrede=addslashes(trim($data)); } $i++; continue; }; $data=trim($data); // seit 2.6 ist die DB-Kodierung UTF-8 @holger Ansonsten einmal vorher die DB-Encoding auslesen // Falls die Daten ISO-kodiert kommen entsprechend wandeln // done! // UTF-8 MUSS als erstes stehen, da ansonsten die Prüfung bei ISO-8859-1 aufhört ... // die blöde mb_detect... tut leider nicht immer, daher die Möglichkeit der Auswahl // TODO Umlaute am Anfang wurden bei meinem Test nicht übernommen (Österreich). S.a.: // http://forum.de.selfhtml.org/archiv/2007/1/t143904/ if (Translate) translate($data); //$data=htmlentities($data); $data=addslashes($data); if ($in_fld[$i]==$file."number") { // customernumber || vendornumber if (empty($data) or !$data) { $data=getKdId(); $number=true; } else { $data=chkKdId($data); $number=true; } } else if ($in_fld[$i]=="taxincluded"){ $data=strtolower(substr($data,0,1)); if ($data!="f" && $data!="t") $data="f"; } else if ($in_fld[$i]=="ustid"){ $data=strtr($data," ",""); } /*else if ($in_fld[$i]=="matchcode") { $matchcode=$data; $i++; continue; if ($data==false or empty($data) or !$data) { if (in_array($in_fld[$i],array("name"))) { $data=$matchcode; } } }*/ $keys.=$in_fld[$i].","; if ($data==false or empty($data) or !$data) { $vals.="null,"; } else { if ($in_fld[$i]=="contact"){ if ($anrede) { $vals.="'$anrede $data',"; } else { $vals.="'$data',"; } } else { $vals.="'".$data."',"; } } $i++; } if (!$number) { $keys.=$file."number,"; $vals.="'".getKdId()."',"; } if ($keys<>"(") { if ($test) { if ($first) { echo "\n"; echo "\n"; $first=false; }; $vals=str_replace("',","'\n"; //echo "Import $j
\n"; flush(); } else { $sql.=$keys."taxzone_id,import)"; $sql.=$vals."0,$nun)"; $rc=$db->query($sql); if (!$rc) echo "Fehler: ".$sql."
"; } $j++; } else { $vals=str_replace("',","'\n"; flush(); } $zeile=fgetcsv($f,1200,$trenner); } fclose($f); if ($test) echo "
".str_replace(",","",substr($keys,1,-1))."
",substr($vals,9,-1)); echo "
".str_replace("null,","null",$vals)."
",substr($vals,9,-1)); echo "
".str_replace("null,","null",$vals)."
\n ##### = Neue Kunden-/Lieferantennummer\n
"; echo $j." $file importiert.\n"; } else { ?>

Adressimport für die ERP


Zieltabellecustomer vendor
Trennzeichen Semikolon Komma Tabulator Leerzeichen
Testja
Daten
Verwendete
Zeichecodierung