Array verliert Elemente

DiDiJo

Erfahrenes Mitglied
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.

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
 
mal überlegt 2 arrays zu nehmen?
vielleicht gibt es ja eine Begrenzung, diese würdest du damit übergehen
 
ich könnte auch 5 nehmen ... dadurch wird aber alles weitere komplizierter .. außerdem kann ich mir net vorstelklen, dass ein array nicht mehr als 255 elemente beinhalten kann
 
Ja habe mal geschaut, gibt wohl keine Begrenzung.
Versuch mal mit dem Debugger von Zend rüberzugucken Zeile für Zeile wie sich die Werte verändern
ICh pers. sehe da jetzt keinen Fehler
 
Zurück