Dateiimport nur teilweise möglich

julia29

Erfahrenes Mitglied
Hi,
möchte eine csv-Datei die auf dem Server liegt per Script in eine MySQL einlesen. Dies klappt eigentlich auch, jedoch nur für die ersten zehn Felder. Für alle nachfolgenden wird ein Fehler ausgegeben.

Notice: Undefined index: 11
Notice: Undefined index: 12
....

Hier mein Script:
(Das Feld `id` ist auto_increment, deshalb habe ich die Spalte beim Einlesen ohne Wert gelassen.)

PHP:
<?php
# CSV-Import direkt auf dem Server 
error_reporting(E_ALL);

//Verbindung mit der Datenbank aufbauen
$Link=mysql_connect("localhost","xxx","xxx") or die (mysql_error());
mysql_select_db("usr_webxx_1");
$table = "table_1";
#}

$temppath= "http://www.meine_domain.de/datei_1.csv";

//Tempdatei öffnen
$fp = @fopen($temppath, "r") or die ("Kann Datei nicht lesen.");

//Zeilen auslesen und in der Datenbank speichern
$handle = fopen($temppath,"r"); 
while ( ($x= fgetcsv ($handle, 22, ';') ) !== FALSE ) { 
/** Sonderzeichen strippen **/
foreach($x as $i => $s) {
	$x[$i]=str_replace("'","\"",$s);
}
//Testausdruck
#echo "m0= $m[0]<br>";
#echo "m1= $m[1]<br>";
#echo "m2= $m[2]<br>";
mysql_query("INSERT INTO `table_1` ( `id`, `feld0`, 
`feld01`, `feld02`, `feld03`, `feld04`, `feld05`, 
`feld06`, `feld07`, `feld08`, `feld09`, `feld10`,
`feld11`, `feld12`, `feld13`, `feld14`, `feld15`, 
`feld16`, `feld17`, `feld18`, `feld19`, `feld20`
) 
VALUES ('', '$x[0]', 
'$x[1]', '$x[2]', '$x[3]', '$x[4]', '$x[5]', 
'$x[6]', '$x[7]', '$x[8]', '$x[9]', '$x[10]',
'$x[11]', '$x[12]', '$x[13]', '$x[14]', '$x[15]', 
'$x[16]', '$x[17]', '$x[18]', '$x[19]', '$x[20]' 
)")
OR die("Konnte Datensatz nicht speichern.<br>Fehlermeldung: ".mysql_error()); 
} 
?>

Warum werden nur die ersten zehn und nicht alle Felder importiert?
mfg
Julia
 
PHP:
foreach($x as $i => $s) {
    $x[$i]=str_replace("'","\"",$s);
}
Wenn du das str_replace auf alle Teile von $x loslassen willst kannst du das auch einfach so schreiben:
PHP:
$x=str_replace("'","\"",$x);
Die Funktion nimmt nämlich bei allen Parametern auch Arrays an.



PHP:
fgetcsv ($handle, 22, ';')
Ist 22 hier vileicht einfach zu klein? Das muss größer sein als die längste Zeile in der Datei.

Du könntest zum testen mal den wert erhöhen.
Poste dochmal eine Beispielzeile aus der Datei.
 
PHP:
fgetcsv ($handle, 22, ';')
Ist 22 hier vileicht einfach zu klein? Das muss größer sein als die längste Zeile in der Datei.

Du könntest zum testen mal den wert erhöhen.

Hi CraHack,

das war genau der richtige Hinweiß.
Habe mal auf 150 erhöht und richtig, der Punkt wo vorher die Probleme auftraten hat sich weiter zum Ende verschoben. Jetzt steht der Wert auf 1000 und die Probleme und Fehlermeldungen sind weg.

Vielen Dank
mfg
Julia
 
Zurück