X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=lxo-import%2FaddressB.php;h=bd5317f05836800d95a383d110aafe432ba11fe7;hb=7cf894f137fa5e4a2679b8a6e1aa00566041f9e4;hp=05ced5e8540eb12279a6a7c5adca660e1950f3db;hpb=8cf7d0a1f3279c2f1aefae70c6d5689da5156460;p=kivitendo-erp.git diff --git a/lxo-import/addressB.php b/lxo-import/addressB.php old mode 100755 new mode 100644 index 05ced5e85..bd5317f05 --- 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) { @@ -111,14 +147,14 @@ if ($ok) while (!feof($f)){ $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/ - $encoding = mb_detect_encoding($data,"UTF-8,ISO-8859-1,ISO-8859-15"); - if ($encoding != "UTF-8"){ - $data=mb_convert_encoding($data, "UTF-8","$encoding"); - } + if (Translate) translate($data); + //$data=htmlentities($data); $data=addslashes($data); if ($in_fld[$i]==$file."number") { // customernumber || vendornumber @@ -132,12 +168,9 @@ if ($ok) while (!feof($f)){ } 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"){ - Was passiert hier: - $data=strtr(" ","",$data); - SUCHE IN ' ' nach dem Vorkommen von '' mit der BOOLEAN-Interpretation von $data - demnach gibt es immer eine leere Zeichenkette zurück. - }*/ /*else if ($in_fld[$i]=="matchcode") { + } else if ($in_fld[$i]=="ustid"){ + $data=strtr($data," ",""); + } /*else if ($in_fld[$i]=="matchcode") { $matchcode=$data; $i++; continue; @@ -204,14 +237,31 @@ echo $j." $file importiert.\n";
- + - + +
Zieltabellecustomer vendor
Trennzeichen
Trennzeichen + Semikolon + Komma + Tabulator + Leerzeichen + + +
Testja
Daten
Verwendete
Zeichecodierung
+ +
- +