Hey leute ... ich bin gerade dabei ne funktion zu basteln um immobilien zu importieren.
die daten der einzelnen immobilien stehen in einer CSV datei (die mehr als 255 spalten hat).
im grunde genommen läuft die funktion auch aber bei der übergroßen csv dateien machts probleme.
ich nutze meine funktion für 2 bereiche .. .einmal um kunden einzutragen und einmal für immobilien ... rufe ich die funktion mit einer weitaus kleineren CSV datei auf (für die kunden) klappt alles prima. bei der großen datei gehts in die hose ... hier die 2 funktionen.
mein problem is jetzt, dass bei /****** MARKER 1 das array noch 268 elemente hat. wenn ich nun das array bei /****** MARKER 2 ausgebe hat es plötzlich nur noch 255 elemente. genauso wie das $daten-Array. Das sollte eigentlich gleich viele Daten haben wie das $array-Array (minus 2, da status und userID dynamisch eingetragen werden).
kann mit jemand erklären wo plötzlich meine letzten 13 elemente sind. achja ... das array verliert nicht irgendwo daten sondern es wird einfach abgeschnitten
die daten der einzelnen immobilien stehen in einer CSV datei (die mehr als 255 spalten hat).
im grunde genommen läuft die funktion auch aber bei der übergroßen csv dateien machts probleme.
ich nutze meine funktion für 2 bereiche .. .einmal um kunden einzutragen und einmal für immobilien ... rufe ich die funktion mit einer weitaus kleineren CSV datei auf (für die kunden) klappt alles prima. bei der großen datei gehts in die hose ... hier die 2 funktionen.
PHP:
function getColumns($ziel) {
$array = array();
if ($ziel == 'kunden') $rs = mysql_query("SHOW COLUMNS FROM kunden");
if ($ziel == 'immo') $rs = mysql_query("SHOW COLUMNS FROM immobilien");
while ($row = mysql_fetch_array($rs)) {
if ($row[0] != 'uid' &&
$row[0] != 'status' &&
$row[0] != 'regDate' &&
$row[0] != 'knr' &&
$row[0] != 'id') array_push($array,$row[0]);
}
return $array;
}
function csvToSql($csv,$ziel) {
$array = getColumns($ziel);
$zeile = 1;
$error = 0;
// ***** MARKER 1
var_dump($array);
echo '<hr><hr>';
$dateizeiger = fopen($_SERVER['DOCUMENT_ROOT'].'/uploads/csv/'.$csv, "r");
while(($daten = fgetcsv($dateizeiger, 65000, ";")) !== FALSE){
if ($zeile >= 2) {
foreach ($daten as $cnt => $value) $daten[$cnt] = "'".addslashes($value)."'";
if ($ziel == 'kunden') $sql = "INSERT INTO kunden (`uid`,`regDate`,`".implode("`,`",$array)."`,`status`) VALUES ('$_SESSION[uid]','".date("Y-m-d")."',".implode(",",$daten).",'1')";
if ($ziel == 'immo') $sql = "INSERT INTO immobilien (`uid`,`".implode("`,`",$array)."`,`status`) VALUES ('$_SESSION[uid]',".implode(",",$daten).",'1')";
if (!mysql_query($sql)) $error++;
echo count($array).' - '.count($daten).' --> '.$sql.'<br/><br/>';
}
$zeile++;
// *********** MARKER 2
//var_dump($array);
//var_dump($daten);
//echo '<br><br>';
}
fclose($dateizeiger);
unlink($_SERVER['DOCUMENT_ROOT'].'/uploads/csv/'.$csv);
if ($error == 0) return "<span class='success'>Sie haben erfolgreich Ihre Kundenliste importiert</span>";
else return "<span class='message'>Beim Importieren der Kundenliste ist ein Fehler aufgetreten</span>";
}
mein problem is jetzt, dass bei /****** MARKER 1 das array noch 268 elemente hat. wenn ich nun das array bei /****** MARKER 2 ausgebe hat es plötzlich nur noch 255 elemente. genauso wie das $daten-Array. Das sollte eigentlich gleich viele Daten haben wie das $array-Array (minus 2, da status und userID dynamisch eingetragen werden).
kann mit jemand erklären wo plötzlich meine letzten 13 elemente sind. achja ... das array verliert nicht irgendwo daten sondern es wird einfach abgeschnitten