X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=lxo-import%2FaddressB.php;h=bd5317f05836800d95a383d110aafe432ba11fe7;hb=f5f077a7993b74d793005e3aea6664debef07853;hp=2341fdd81fa3d4e660d97501057bf7ad25436d76;hpb=fc47e4830133fb0841ae91a63f909ea7ce6d72fe;p=kivitendo-erp.git diff --git a/lxo-import/addressB.php b/lxo-import/addressB.php index 2341fdd81..bd5317f05 100644 --- a/lxo-import/addressB.php +++ b/lxo-import/addressB.php @@ -1,7 +1,7 @@ -"; 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"],$file.".csv")) { + 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($_POST["ziel"].".csv")) { +} else if (is_file($dir.$_POST["ziel"].".csv")) { $file=$_POST["ziel"]; } else { $file=false; @@ -67,8 +67,12 @@ if (!empty($_FILES["Datei"]["name"])) { 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("$file.csv")) ende("$file.csv nicht im Ordner oder leer"); +if (!file_exists($dir.$file.".csv")) ende("$file.csv nicht im Ordner oder leer"); if (!$db->chkcol($file)) ende("Importspalte kann nicht angelegt werden"); @@ -78,9 +82,41 @@ if (!$employee) ende("Ungültiger User"); $kunde_fld = array_keys($address); -$f=fopen("$file.csv","r"); + //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)); +$infld=explode($trenner,strtolower($zeile)); $first=true; $ok=true; foreach ($infld as $fld) { @@ -109,7 +145,16 @@ if ($ok) while (!feof($f)){ continue; }; $data=trim($data); - $data=mb_convert_encoding($data,"ISO-8859-15","auto"); + // 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 @@ -124,7 +169,7 @@ if ($ok) while (!feof($f)){ $data=strtolower(substr($data,0,1)); if ($data!="f" && $data!="t") $data="f"; } else if ($in_fld[$i]=="ustid"){ - $data=strtr(" ","",$data); + $data=strtr($data," ",""); } /*else if ($in_fld[$i]=="matchcode") { $matchcode=$data; $i++; @@ -192,14 +237,31 @@ echo $j." $file importiert.\n";
- + - + +
Zieltabellecustomer vendor
Trennzeichen
Trennzeichen + Semikolon + Komma + Tabulator + Leerzeichen + + +
Testja
Daten
Verwendete
Zeichecodierung
+ +
- +