Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 885e7d76

Von Holger Lindemann vor fast 15 Jahren hinzugefügt

  • ID 885e7d7601de767605f2938a69bae18258c62696
  • Nachfolger 74f7cca4

Uploadverzeichnis in users (Bug 1343)

Abfrage Server-Zeichencode (Bug 1350)
Trennzeichen in allen File wählbar
Zeichenkonvertierung: (Bug 1036)
Da Web und DB Server nicht auf dem gleichen Server laufen müssen,
muß der Client (php) auf den Server eingestellt werden.
Bei der Datenkonvertierung einen Zeichencode mitgeben oder auf Auto stellen
mb_detect_encoding arbeitet nicht zuverlässig!!! Liefert häufig den ersten zu testenden Code zurück.

Unterschiede anzeigen:

lxo-import/addressB.php
48 48
    echo "Abbruch: $txt<br>";
49 49
    exit(1);
50 50
}
51

  
51
$dir = "../users/";
52 52
clearstatcache ();
53 53
//print_r($_FILES);
54 54
$test=$_POST["test"];
55 55
if (!empty($_FILES["Datei"]["name"])) {
56 56
    $file=$_POST["ziel"];
57
    if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$file.".csv")) {
57
    if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$dir.$file.".csv")) {
58 58
        $file=false;
59 59
        echo "Upload von ".$_FILES["Datei"]["name"]." fehlerhaft. (".$_FILES["Datei"]["error"].")<br>";
60 60
    }
61
} else if (is_file($_POST["ziel"].".csv")) {
61
} else if (is_file($dir.$_POST["ziel"].".csv")) {
62 62
    $file=$_POST["ziel"];
63 63
} else {
64 64
    $file=false;
......
67 67
if (!$file) ende ("Kein Datenfile");
68 68

  
69 69
$trenner=($_POST["trenner"])?$_POST["trenner"]:",";
70
if ($trenner=="other") {
71
    $trenner=trim($trennzeichen);
72
    if (substr($trenner,0,1)=="#") if (strlen($trenner)>1) $trenner=chr(substr($trenner,1));
73
} 
70 74

  
71
if (!file_exists("$file.csv")) ende("$file.csv nicht im Ordner oder leer");
75
if (!file_exists($dir.$file.".csv")) ende("$file.csv nicht im Ordner oder leer");
72 76

  
73 77

  
74 78
if (!$db->chkcol($file)) ende("Importspalte kann nicht angelegt werden");
......
78 82

  
79 83
$kunde_fld = array_keys($address);
80 84

  
81
$f=fopen("$file.csv","r");
85
    //Zeichencodierung des Servers
86
    $tmpcode = $db->getServerCode();
87
    //Leider sind die Benennungen vom Server anders als von mb_detect_encoding
88
    if ($tmpcode == "UTF8") {
89
         define("ServerCode","UTF-8");
90
    } else if ($tmpcode == "LATIN9") {
91
         define("ServerCode","ISO-8859-15");
92
    } else if ($tmpcode == "LATIN1") {
93
         define("ServerCode","ISO-8859-1");
94
    } else {
95
         define("ServerCode",$tmpcode);
96
    }
97
    //Zeichensatz sollte gleich sein, sonst ist die Datenkonvertierung nutzlos
98
    //DB und LxO müssen ja nicht auf der gleichen Maschiene sein.
99
    if($tmpcode<>$db->getClientCode()) {
100
        $rc = $db->setClientCode($tmpcode);
101
    }
102

  
103
    // Zeichenkodierung File
104
    if ($_POST["encoding"] == "auto") {
105
         define("Auto",true);
106
         define("Translate",true);
107
    } else {
108
         define("Auto",false);
109
         if ($_POST["encoding"] == ServerCode) {
110
            define("Translate",false);
111
         } else {
112
            define("Translate",true);
113
            define("FileCode",$_POST["encoding"]);
114
         }
115
    }
116

  
117
$f=fopen($dir.$file.".csv","r");
82 118
$zeile=fgets($f,1200);
83 119
$infld=split($trenner,strtolower($zeile));
84 120
$first=true;
......
111 147
        $data=trim($data);
112 148
        // seit 2.6 ist die DB-Kodierung UTF-8 @holger Ansonsten einmal vorher die DB-Encoding auslesen
113 149
        // Falls die Daten ISO-kodiert kommen entsprechend wandeln
150
        // done!
114 151
        // UTF-8 MUSS als erstes stehen, da ansonsten die Prüfung bei ISO-8859-1 aufhört ...
152
        // die blöde mb_detect... tut leider nicht immer, daher die Möglichkeit der Auswahl
115 153
        // TODO Umlaute am Anfang wurden bei meinem Test nicht übernommen (Österreich). S.a.:
116 154
        // http://forum.de.selfhtml.org/archiv/2007/1/t143904/
117 155

  
118
        $encoding = mb_detect_encoding($data,"UTF-8,ISO-8859-1,ISO-8859-15");
119
        if ($encoding != "UTF-8"){
120
          $data=mb_convert_encoding($data, "UTF-8","$encoding");
121
        }
156
        if (Translate) translate($data);
157

  
122 158
        //$data=htmlentities($data);
123 159
        $data=addslashes($data);
124 160
        if ($in_fld[$i]==$file."number") {  // customernumber || vendornumber
......
132 168
        } else if ($in_fld[$i]=="taxincluded"){
133 169
            $data=strtolower(substr($data,0,1));
134 170
            if ($data!="f" && $data!="t") $data="f";
135
        } /*else if ($in_fld[$i]=="ustid"){
136
            Was passiert hier:
137
            $data=strtr(" ","",$data);
138
            SUCHE IN ' ' nach dem Vorkommen von '' mit der BOOLEAN-Interpretation von $data
139
            demnach gibt es immer eine leere Zeichenkette zurück.
140
        }*/ /*else if ($in_fld[$i]=="matchcode") {
171
        } else if ($in_fld[$i]=="ustid"){
172
            $data=strtr($data," ","");
173
        } /*else if ($in_fld[$i]=="matchcode") {
141 174
                  $matchcode=$data;
142 175
                  $i++;
143 176
                  continue;
......
208 241
<table>
209 242
<tr><td></td><td><input type="submit" name="ok" value="Hilfe"></td></tr>
210 243
<tr><td>Zieltabelle</td><td><input type="radio" name="ziel" value="customer" checked>customer <input type="radio" name="ziel" value="vendor">vendor</td></tr>
211
<tr><td>Trennzeichen</td><td><input type="text" size="2" maxlength="1" name="trenner" value=";"></td></tr>
244
<tr><td>Trennzeichen</td><td>
245
        <input type="radio" name="trenner" value=";" checked>Semikolon
246
        <input type="radio" name="trenner" value=",">Komma
247
        <input type="radio" name="trenner" value="#9" checked>Tabulator
248
        <input type="radio" name="trenner" value=" ">Leerzeichen
249
        <input type="radio" name="trenner" value="other">
250
        <input type="text" size="2" name="trennzeichen" value="">
251
</td></tr>
212 252
<tr><td>Test</td><td><input type="checkbox" name="test" value="1">ja</td></tr>
213 253
<tr><td>Daten</td><td><input type="file" name="Datei"></td></tr>
254
<tr><td>Verwendete<br />Zeichecodierung</td><td>
255
        <select name="encoding">
256
        <option value="auto">Automatisch (versuchen)</option>
257
        <option value="UTF-8">UTF-8</option>
258
        <option value="ISO-8859-1">ISO-8859-1</option>
259
        <option value="ISO-8859-15">ISO-8859-15</option>
260
        <option value="Windows-1252">Windows-1252</option>
261
        <option value="ASCII">ASCII</option>
262
        </select>
263
</td></tr>
214 264
<tr><td></td><td><input type="submit" name="ok" value="Import"></td></tr>
215 265
</table>
216 266
</form>
lxo-import/contactB.php
28 28
$crm=checkCRM();
29 29

  
30 30
if ($_POST["ok"]) {
31
    $dir = "../users/";
32

  
31 33
	$test=$_POST["test"];
32 34

  
33 35
	if ($crm) {
......
55 57
	clearstatcache ();
56 58

  
57 59
	$trenner=($_POST["trenner"])?$_POST["trenner"]:",";
60
    if ($trenner=="other") {
61
        $trenner=trim($trennzeichen);
62
        if (substr($trenner,0,1)=="#") if (strlen($trenner)>1) $trenner=chr(substr($trenner,1));
63
    }
64
 
58 65

  
59 66
if (!empty($_FILES["Datei"]["name"])) { 
60 67
	$file=$_POST["ziel"];
61
	if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$file."_contact.csv")) {
68
	if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$dir.$file."_contact.csv")) {
62 69
		$file=false;
63 70
		echo "Upload von ".$_FILES["Datei"]["name"]." fehlerhaft. (".$_FILES["Datei"]["error"].")<br>";
64 71
	} 
65
} else if (is_file($_POST["ziel"]."_contact.csv")) {
72
} else if (is_file($dir.$_POST["ziel"]."_contact.csv")) {
66 73
	$file=$_POST["ziel"];
67 74
} else {
68 75
	$file=false;
......
70 77

  
71 78
if (!$file) ende (2);
72 79

  
73
if (!file_exists($file."_contact.csv")) ende(5);
80
if (!file_exists($dir.$file."_contact.csv")) ende(5);
74 81

  
75
$prenumber=$_POST["prenumber"];
82
//$prenumber=$_POST["prenumber"];
76 83

  
77 84
$employee=chkUsr($_SESSION["employee"]);
78 85
if (!$employee) ende(4);
79 86

  
80 87
if (!$db->chkcol($file)) ende(6);
81 88

  
82
$f=fopen($file."_contact.csv","r");
89
    //Zeichencodierung des Servers
90
    $tmpcode = $db->getServerCode();
91
    //Leider sind die Benennungen vom Server anders als von mb_detect_encoding
92
    if ($tmpcode == "UTF8") {
93
         define("ServerCode","UTF-8");
94
    } else if ($tmpcode == "LATIN9") {
95
         define("ServerCode","ISO-8859-15");
96
    } else if ($tmpcode == "LATIN1") {
97
         define("ServerCode","ISO-8859-1");
98
    } else {
99
         define("ServerCode",$tmpcode);
100
    }
101
    //Zeichensatz sollte gleich sein, sonst ist die Datenkonvertierung nutzlos
102
    //DB und LxO müssen ja nicht auf der gleichen Maschiene sein.
103
    if($tmpcode<>$db->getClientCode()) {
104
        $rc = $db->setClientCode($tmpcode);
105
    }
106

  
107
    // Zeichenkodierung File
108
    if ($_POST["encoding"] == "auto") {
109
         define("Auto",true);
110
         define("Translate",true);
111
    } else {
112
         define("Auto",false);
113
         if ($_POST["encoding"] == ServerCode) {
114
            define("Translate",false);
115
         } else {
116
            define("Translate",true);
117
            define("FileCode",$_POST["encoding"]);
118
         }
119
    }
120

  
121

  
122
$f=fopen($dir.$file."_contact.csv","r");
83 123
$zeile=fgetcsv($f,2000,$trenner);
84 124

  
85 125
$first=true;
......
105 145
		}
106 146
		$data=addslashes(trim($data));
107 147
		if ($in_fld[$i]=="firma" && $data) { 
148
            if (Translate) translate($data);
108 149
			$data=suchFirma($file,$data);
109 150
			if ($data) {
110 151
				$id=$data["cp_cv_id"];
......
149 190
		if ($data==false or empty($data) or !$data) {
150 191
                        $vals.="null,";
151 192
                } else {
152
                	if (in_array($in_fld[$i],array("cp_fax","cp_phone1","cp_phone2"))) {
153
				$data=$prenumber.$data;
154
			} else if ($in_fld[$i]=="cp_country" && $data) {
155
				$data=mkland($data);
156
			}
157
			if ($in_fld[$i]=="cp_name") $name=true;
158
                        $vals.="'".$data."',";
159
                        // bei jedem gefuellten Datenfeld erhoehen
160
                        $val_count++;
193

  
194
                    if (Translate) translate($data);
195

  
196
                	/*if (in_array($in_fld[$i],array("cp_fax","cp_phone1","cp_phone2"))) {
197
				        $data=$prenumber.$data;
198
                    } else if ($in_fld[$i]=="cp_country" && $data) {
199
                        $data=mkland($data);
200
                    } */
201
    		    	if ($in_fld[$i]=="cp_name") $name=true;
202
                    $vals.="'".$data."',";
203
                    // bei jedem gefuellten Datenfeld erhoehen
204
                    $val_count++;
161 205
                }
162 206
	}
163 207
	if (!$name) {
......
197 241
<table>
198 242
<tr><td></td><td><input type="submit" name="ok" value="Hilfe"></td></tr>
199 243
<tr><td>Zieltabelle</td><td><input type="radio" name="ziel" value="customer" checked>customer <input type="radio" name="ziel" value="vendor">vendor</td></tr>
200
<tr><td>Trennzeichen</td><td><input type="text" size="2" maxlength="1" name="trenner" value=";"></td></tr>
201
<tr><td>Telefonvorwahl</td><td><input type="text" size="4" maxlength="1" name="prenumber" value=""></td></tr>
244
<tr><td>Trennzeichen</td><td>
245
        <input type="radio" name="trenner" value=";" checked>Semikolon
246
        <input type="radio" name="trenner" value=",">Komma
247
        <input type="radio" name="trenner" value="#9" checked>Tabulator
248
        <input type="radio" name="trenner" value=" ">Leerzeichen
249
        <input type="radio" name="trenner" value="other">
250
        <input type="text" size="2" name="trennzeichen" value="">
251
</td></tr>
252
<!--tr><td>Telefonvorwahl</td><td><input type="text" size="4" maxlength="1" name="prenumber" value=""></td></tr-->
202 253
<tr><td>Test</td><td><input type="checkbox" name="test" value="1">ja</td></tr>
203 254
<tr><td>Daten</td><td><input type="file" name="Datei"></td></tr>
255
<tr><td>Verwendete<br />Zeichecodierung</td><td>
256
        <select name="encoding">
257
        <option value="auto">Automatisch (versuchen)</option>
258
        <option value="UTF-8">UTF-8</option>
259
        <option value="ISO-8859-1">ISO-8859-1</option>
260
        <option value="ISO-8859-15">ISO-8859-15</option>
261
        <option value="Windows-1252">Windows-1252</option>
262
        <option value="ASCII">ASCII</option>
263
        </select>
264
</td></tr>
204 265
<tr><td></td><td><input type="submit" name="ok" value="Import"></td></tr>
205 266
</table>
206 267
</form>
lxo-import/db.php
134 134
        } else { return true; };
135 135
    }
136 136

  
137
    /**
138
     * Zeichekodirung der DB ermitteln
139
     * 
140
     * @return String
141
     */
142
    function getServerCode() {
143
        $sql="SHOW  server_encoding";
144
        $rs = $this->getAll($sql);
145
        return $rs[0]["server_encoding"];
146
    }
147
    function getClientCode() {
148
        $sql="SHOW  client_encoding";
149
        $rs = $this->getAll($sql);
150
        return $rs[0]["client_encoding"];
151
    }
152
    function setClientCode($encoding) {
153
        $sql="SET  client_encoding = '$encoding'";
154
        $rc = $this->query($sql);
155
        return $rc;
156
    }
137 157
           
138 158
}
139 159
?>
lxo-import/import_lib.php
93 93
    "partsgroup2" => "3.Warengruppenbezeichnung",
94 94
    "partsgroup3" => "4.Warengruppenbezeichnung",
95 95
    "partsgroup4" => "5.Warengruppenbezeichnung",
96
    "shop"  => "Shopexport vorghesehen",
96 97
    );
97 98
    
98 99
$contactscrm = array(
......
369 370
    $db->query($sql,"authuser_3");
370 371
    return $auth;
371 372
}
373
/**
374
 * Zeichencode ?bersetzen
375
 *
376
 * @param String $txt
377
 */
378
function translate(&$txt) {
379
    if (Auto) {
380
        $encoding = mb_detect_encoding($data,"UTF-8,ISO-8859-1,ISO-8859-15,Windows-1252,ASCII");
381
        $txt = iconv("$encoding",ServerCode."//TRANSLIT",$txt);
382
        //$txt = mb_convert_encoding($txt, ServerCode,"$encoding");
383
    } else {
384
        $txt = iconv(FileCode,ServerCode."//TRANSLIT",$txt);
385
        //$txt = mb_convert_encoding($txt, ServerCode,FileCode);
386
    }
387
}
372 388

  
373 389
?>
lxo-import/partsB.php
27 27
/* get DB instance */
28 28
$db=$_SESSION["db"]; //new myDB($login);
29 29

  
30

  
31 30
/* just display page or do real import? */
32 31
if ($_POST["ok"]) {
33 32

  
34 33
    require ("parts_import.php");
34
    //Zeichencodierung des Servers
35
    $tmpcode = $db->getServerCode();
36
    //Leider sind die Benennungen vom Server anders als von mb_detect_encoding
37
    if ($tmpcode == "UTF8") {
38
         define("ServerCode","UTF-8");
39
    } else if ($tmpcode == "LATIN9") {
40
         define("ServerCode","ISO-8859-15");
41
    } else if ($tmpcode == "LATIN1") {
42
         define("ServerCode","ISO-8859-1");
43
    } else {
44
         define("ServerCode",$tmpcode);
45
    }
46
    //Zeichensatz sollte gleich sein, sonst ist die Datenkonvertierung nutzlos
47
    //DB und LxO müssen ja nicht auf der gleichen Maschiene sein.
48
    if($tmpcode<>$db->getClientCode()) {
49
        $rc = $db->setClientCode($tmpcode);
50
    } 
51

  
52
    // Zeichenkodierung File
53
    if ($_POST["encoding"] == "auto") {
54
         define("Auto",true);
55
         define("Translate",true);
56
    } else {
57
         define("Auto",false);
58
         if ($_POST["encoding"] == ServerCode) {
59
            define("Translate",false);
60
         } else {
61
            define("Translate",true);
62
            define("FileCode",$_POST["encoding"]);
63
         }
64
    }
35 65

  
36 66
    /* display help */
37 67
    if ($_POST["ok"]=="Hilfe") {
......
66 96
    $precision = $_POST["precision"];
67 97
    $quotation = $_POST["quotation"];
68 98
    $quottype = $_POST["quottype"];
69
    $file    = "../users/parts.csv";
70
    $table   = "parts";
99
    $file    = "parts";
71 100

  
72 101
    /* no data? */
73 102
    if (empty($_FILES["Datei"]["name"]))
74 103
        ende ("Kein Datenfile angegeben");
75 104

  
76 105
    /* copy file */
77
    if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$file)) {
106
    $dir="../users/";
107
    if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$dir.$file.".csv")) {
78 108
        ende ("Upload von Datei fehlerhaft.".$_FILES["Datei"]["error"]);
79 109
    } 
80 110

  
81 111
    /* check if file is really there */
82
    if (!file_exists("$file") or filesize("$file")==0) 
83
        ende("Datenfile ($file) nicht im Ordner gefunden oder leer");
112
    if (!file_exists($dir.$file.'.csv') or filesize($dir.$file.'.csv')==0) 
113
        ende("Datenfile ($file.csv) nicht im Ordner gefunden oder leer");
84 114

  
85 115
    /* Zu diesem Zeitpunkt wurde der Artikel Importiert */
86
    if (!$db->chkcol($table)) 
116
    if (!$db->chkcol($file)) 
87 117
        ende("Importspalte konnte nicht angelegt werden");
88 118

  
89 119
    /* first check all elements */
......
94 124
    $_test["lagerplatz"]=$_POST["lagerplatz"];
95 125

  
96 126
    /* just print data or insert it, if test is false */
97
    import_parts($db, $file, $trenner, $trennzeichen, $parts, FALSE, !$test, $_POST["show"],$_POST);
127
    import_parts($db, $dir.$file, $trenner, $trennzeichen, $parts, FALSE, !$test, $_POST["show"],$_POST);
98 128

  
99 129
} else {
100 130
    $bugrus=getAllBG($db);
......
131 161
<tr><td>Test</td><td><input type="checkbox" name="test" value="1">ja</td></tr>
132 162
<tr><td>Textupdate</td><td><input type="checkbox" name="TextUpd" value="1">ja</td></tr>
133 163
<tr><td>Warengruppen<br>verbinder</td><td><input type="text" name="wgtrenner" value="!" size="3"></td></tr>
134
<tr><td>Shopartikel,<br>falls Feld leer</td><td><input type="radio" name="shop" value="t">ja <input type="radio" name="shop" value="f" checked>nein</td></tr>
164
<tr><td>Shopartikel<br />falls nicht &uuml;bergeben</td><td><input type="radio" name="shop" value="t">ja <input type="radio" name="shop" value="f" checked>nein</td></tr>
135 165
<tr><td>Art</td><td><input type="Radio" name="ware" value="W" checked>Ware &nbsp; 
136 166
            <input type="Radio" name="ware" value="D">Dienstleistung
137 167
            <input type="Radio" name="ware" value="G">gemischt (Spalte 'art' vorhanden)</td></tr>
......
145 175
    <input type="radio" name="bugrufix" value="2">f&uuml;r Artikel ohne passende Bugru
146 176
    </td></tr>
147 177
<tr><td>Daten</td><td><input type="file" name="Datei"></td></tr>
178
<tr><td>Verwendete<br />Zeichecodierung</td><td>
179
        <select name="encoding">
180
        <option value="auto">Automatisch (versuchen)</option>
181
        <option value="UTF-8">UTF-8</option>
182
        <option value="ISO-8859-1">ISO-8859-1</option>
183
        <option value="ISO-8859-15">ISO-8859-15</option>
184
        <option value="Windows-1252">Windows-1252</option>
185
        <option value="ASCII">ASCII</option>
186
        </select>
187
</td></tr>
148 188
<tr><td></td><td><input type="submit" name="ok" value="Import"></td></tr>
149 189
</table>
150 190
</form>
lxo-import/parts_import.php
1
<?
1
<?php
2 2
//Henry Margies <h.margies@maxina.de>
3 3
//Holger Lindemann <hli@lx-system.de>
4 4

  
......
210 210
    $parts_fld = array_keys($fields);
211 211

  
212 212
    /* open csv file */
213
    $f=fopen("$file","r");
213
    $f=fopen($file.'.csv',"r");
214 214
    
215 215
    /*
216 216
     * read first line with table descriptions
......
222 222
        show("weight");     show("image");      show("partsgroup_id");
223 223
        show("bg");         show("income_accno"); show("expense_accno");
224 224
        show("inventory_accno"); show("microfiche");show("drawing");show("rop");
225
        show("assembly");show("makemodel");show("shop");  show("");
225
        show("assembly");show("makemodel");  show("shop"); show("");
226 226
        show("</tr>\n",false);
227 227
    }
228 228

  
......
250 250
    while ( ($zeile=fgetcsv($f,120000,$trenner)) != FALSE) {
251 251
        $m++;    /* increase line */
252 252
        $unit=false;
253
   
254 253
        unset($pgroup); 
254
        unset($partsgroup_id); 
255 255
        unset($notes); 
256 256
        unset($rop);
257 257
        unset($weight);
......
274 274

  
275 275
        /* Langtext zusammenbauen */
276 276
        if ($zeile[$fldpos["notes"]]) {
277
            $notes = preg_replace('/""[^ ]/','"',$zeile[$fldpos["notes"]]);
278
            $notes = addslashes($notes);
277
            //Kundenspezifisch:
278
            //$notes = preg_replace('/""[^ ]/','"',$zeile[$fldpos["notes"]]);
279
            $notes = addslashes($zeile[$fldpos["notes"]]);
280
            if (Translate) translate($notes);
279 281
        }
280 282
        if ($zeile[$fldpos["notes1"]]) {
281
            $notes1 = preg_replace('/""[^ ]/','"',$zeile[$fldpos["notes1"]]);
283
            //Kundenspezifisch:
284
            //$notes1 = preg_replace('/""[^ ]/','"',$zeile[$fldpos["notes1"]]);
285
            $notes1 = addslashes($zeile[$fldpos["notes1"]]);
286
echo "!".$notes1."!<br>";
287
            if (Translate) translate($notes1);
288
echo "!".$notes1."!<br>";
282 289
            if ($notes) {
283
                $notes = "\n".addslashes($notes1);
290
                $notes .= "\n".$notes1;
284 291
            } else {
285
                $notes = addslashes($notes1);
292
                $notes = $notes1;
286 293
            }
287 294
        }
288 295

  
......
294 301
        if ($fldpos["partsgroup4"]>0 and $zeile[$fldpos["partsgroup4"]]) $pgroup[]=$zeile[$fldpos["partsgroup4"]];
295 302
        if (count($pgroup)>0) {
296 303
                $pgname = implode($wgtrenner,$pgroup);
304
                if (Translate) translate($pgname);
297 305
                $partsgroup_id = getPartsgroupId($db, $pgname, $insert);
298 306
        }
299 307

  
300 308
        /* sind Hersteller und Modelnummer hinterlegt 
301 309
            wenn ja, erfolgt er insert sp?ter */
302 310
        if (!empty($zeile[$fldpos["makemodel"]]) and !$artikel) { 
303
            $hersteller=suchFirma("vendor",$zeile[$fldpos["makemodel"]]);
311
            $mm = $zeile[$fldpos["makemodel"]];
312
            if (Translate) translate($mm);
313
            $hersteller=suchFirma("vendor",$mm);
304 314
            $hersteller=$hersteller["cp_cv_id"];
305 315
            if (!empty($zeile[$fldpos["model"]])) {
306
                $model = $zeile[$fldpos["model"]];
316
                $mo = $zeile[$fldpos["model"]];
317
                if (Translate) translate($mo);
318
                $model = $mo;
307 319
                $makemodel = 't';
308 320
            } else { 
309 321
                unset($hersteller);
......
378 390

  
379 391
        $description = preg_replace('/""[^ ]/','"',$zeile[$fldpos["description"]]);
380 392
        $description = addslashes($description);
393
        if (Translate) translate($description);
381 394

  
382 395
        // rop und weight m?ssen null oder Zahl sein
383 396
        if ($zeile[$fldpos["rop"]]) $rop = 1 * str_replace(",", ".",$zeile[$fldpos["rop"]]);
......
385 398

  
386 399
        // Shop-Artikel
387 400
        if ($zeile[$fldpos["shop"]]) {
388
                $shop = ($zeile[$fldpos["shop"]] > 0)?'t':'f';
401
                $shop = (strtolower($zeile[$fldpos["shop"]]=='t'))?'t':'f';
389 402
        } else {
390 403
                $shop = $maske["shop"];
391 404
        }
392 405

  
393 406
        // Artikel updaten
407

  
394 408
        if (getPartsid($db,trim($zeile[$fldpos["partnumber"]]))) {
395 409
            /* es gibt die Artikelnummer */
396 410
            if ($Update) {
lxo-import/shiptoB.php
44 44
$crm=checkCRM();
45 45

  
46 46
if ($_POST["ok"] == "Import") {
47
    $dir = "../users/";
48

  
47 49
    $test=$_POST["test"];
48 50
    
49 51
    $shipto_fld = array_keys($shiptos);
......
54 56
    clearstatcache ();
55 57

  
56 58
    $trenner=($_POST["trenner"])?$_POST["trenner"]:",";
59
    if ($trenner=="other") {
60
        $trenner=trim($trennzeichen);
61
        if (substr($trenner,0,1)=="#") if (strlen($trenner)>1) $trenner=chr(substr($trenner,1));
62
    };
57 63

  
58 64
    if (!empty($_FILES["Datei"]["name"])) { 
59 65
        $file=$_POST["ziel"];
60
        if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$file."_shipto.csv")) {
66
        if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$dir.$file."_shipto.csv")) {
61 67
            $file=false;
62 68
            echo "Upload von ".$_FILES["Datei"]["name"]." fehlerhaft. (".$_FILES["Datei"]["error"].")<br>";
63 69
        } 
64
    } else if (is_file($_POST["ziel"]."_shipto.csv")) {
70
    } else if (is_file($dir.$_POST["ziel"]."_shipto.csv")) {
65 71
        $file=$_POST["ziel"];
66 72
    } else {
67 73
        $file=false;
68 74
    } 
69 75
    if (!$file) ende ("Kein Datenfile");
70 76

  
71
    if (!file_exists($file."_shipto.csv")) ende($file."_shipto.csv nicht im Ordner gefunden oder leer");
77
    if (!file_exists($dir.$file."_shipto.csv")) ende($file."_shipto.csv nicht im Ordner gefunden oder leer");
72 78

  
73 79
    $employee=chkUsr($_SESSION["employee"]);
74 80
    if (!$employee) ende("Benutzer unbekannt");
75 81

  
76 82
    if (!$db->chkcol($file)) ende("Importspalte konnte nicht angelegt werden");
83
    //Zeichencodierung des Servers
84
    $tmpcode = $db->getServerCode();
85
    //Leider sind die Benennungen vom Server anders als von mb_detect_encoding
86
    if ($tmpcode == "UTF8") {
87
         define("ServerCode","UTF-8");
88
    } else if ($tmpcode == "LATIN9") {
89
         define("ServerCode","ISO-8859-15");
90
    } else if ($tmpcode == "LATIN1") {
91
         define("ServerCode","ISO-8859-1");
92
    } else {
93
         define("ServerCode",$tmpcode);
94
    }
95
    //Zeichensatz sollte gleich sein, sonst ist die Datenkonvertierung nutzlos
96
    //DB und LxO müssen ja nicht auf der gleichen Maschiene sein.
97
    if($tmpcode<>$db->getClientCode()) {
98
        $rc = $db->setClientCode($tmpcode);
99
    }
100

  
101
    // Zeichenkodierung File
102
    if ($_POST["encoding"] == "auto") {
103
         define("Auto",true);
104
         define("Translate",true);
105
    } else {
106
         define("Auto",false);
107
         if ($_POST["encoding"] == ServerCode) {
108
            define("Translate",false);
109
         } else {
110
            define("Translate",true);
111
            define("FileCode",$_POST["encoding"]);
112
         }
113
    }
77 114

  
78
    $f=fopen($file."_shipto.csv","r");
115
    $f=fopen($dir.$file."_shipto.csv","r");
79 116
    $zeile=fgetcsv($f,1000,$trenner);
80 117
    $first=true;
81 118

  
......
85 122
    }
86 123
    $j=0;
87 124
    $n=0;
88
    $prenumber=$_POST["prenumber"];
125
    //$prenumber=$_POST["prenumber"];
89 126
    $zeile=fgetcsv($f,1000,$trenner);
90 127

  
91 128
    while (!feof($f)){
......
116 153
            }
117 154
            if ($in_fld[$i]=="firma") {
118 155
                if ($id) continue;
156
                if (Translate) translate($data);
119 157
                $data=suchFirma($file,$data);
120 158
                if ($data) {
121 159
                    $id=$data["cp_cv_id"];
......
127 165
            if ($data==false or empty($data) or !$data) {
128 166
                            $vals.="null,";
129 167
            } else {
130
                   if (in_array($in_fld[$i],array("shiptofax","shiptophone"))) {
168
                /*if (in_array($in_fld[$i],array("shiptofax","shiptophone"))) {
131 169
                    $data=$prenumber.$data;
132
                } 
170
                } */
171
                if (Translate) translate($data);
133 172
                $vals.="'".$data."',";
134 173
                // bei jedem gefuellten Datenfeld erhoehen
135 174
                $val_count++;
......
167 206
<table>
168 207
<tr><td></td><td><input type="submit" name="ok" value="Hilfe"></td></tr>
169 208
<tr><td>Zieltabelle</td><td><input type="radio" name="ziel" value="customer" checked>customer <input type="radio" name="ziel" value="vendor">vendor</td></tr>
170
<tr><td>Trennzeichen</td><td><input type="text" size="2" maxlength="1" name="trenner" value=";"></td></tr>
171
<tr><td>Telefonvorwahl</td><td><input type="text" size="4" maxlength="10" name="prenumber" value=""></td></tr>
209
<tr><td>Trennzeichen</td><td>
210
        <input type="radio" name="trenner" value=";" checked>Semikolon
211
        <input type="radio" name="trenner" value=",">Komma
212
        <input type="radio" name="trenner" value="#9" checked>Tabulator
213
        <input type="radio" name="trenner" value=" ">Leerzeichen
214
        <input type="radio" name="trenner" value="other">
215
        <input type="text" size="2" name="trennzeichen" value="">
216
</td></tr>
217
<!--tr><td>Telefonvorwahl</td><td><input type="text" size="4" maxlength="10" name="prenumber" value=""></td></tr-->
172 218
<tr><td>Test</td><td><input type="checkbox" name="test" value="1">ja</td></tr>
173 219
<tr><td>Daten</td><td><input type="file" name="Datei"></td></tr>
220
<tr><td>Verwendete<br />Zeichecodierung</td><td>
221
        <select name="encoding">
222
        <option value="auto">Automatisch (versuchen)</option>
223
        <option value="UTF-8">UTF-8</option>
224
        <option value="ISO-8859-1">ISO-8859-1</option>
225
        <option value="ISO-8859-15">ISO-8859-15</option>
226
        <option value="Windows-1252">Windows-1252</option>
227
        <option value="ASCII">ASCII</option>
228
        </select>
229
</td></tr>
174 230
<tr><td></td><td><input type="submit" name="ok" value="Import"></td></tr>
175 231
</table>
176 232
</form>

Auch abrufbar als: Unified diff