# CSV-Datei einlesen



## WIK-Lars (25. März 2007)

Hallo,

ich möchte eine mit Excel erstellte CSV-Datei auslesen. Wenn ich mit dem unten geschriebenen Code dies Versuche, versucht mein Browser (IE 6) stundenlang die Datei zu öffnen. Es passiert also im Browser gar nichts und irgendwie stürzt er dann so ab, dass er sich nicht einmal mehr vernünftig schließen läßt ( es kommt dann die 'Sofort beenden'-Meldung und wenn ich dort den Button 'Sofort beenden' drücke wird der Browser immer noch nicht geschlossen. Dieses Spielchen kann ich dann ziemlich häufig wiederholen, bis der Browser tatsächlich geschlossen wird).
So, hier mein Code:

```
<html> 
<body> 
<table> 

<? 
$datei = fopen("Adressen.csv", "r"); 
$daten = fgetcsv($datei, 10); 
while($daten) 
{ 
?> 

<tr> 

<? 
for($i=0; $i<count($daten); $i++) 
{ 
?> 

<td><? echo $daten[i]; ?></td> 
<? 
} 
?> 

</tr> 

<? 
} 
fclose($datei); 
?> 

</table> 
</body> 
</html>
```

Vielleicht erkennt ja schon jemand auf den ersten Blick, was nicht stimmt.
Danke für Hilfe,
Lars


----------



## tobee (25. März 2007)

Orientier dich mal an dem Beispiel auf php.net.

```
<?php
$row = 1;                                      // Anzahl der Arrays
$handle = fopen ("test.csv","r");              // Datei zum Lesen öffnen
while ( ($data = fgetcsv ($handle, 1000, ",")) !== FALSE ) { // Daten werden aus der Datei
                                               // in ein Array $data gelesen
   $num = count ($data);                      // Felder im Array $data
                                               // werden gezählt
   print "<p> $num fields in line $row: <br>\n";
   $row++;                                    // Anzahl der Arrays wird
                                               // inkrementiert
   for ($c=0; $c < $num; $c++) {              // FOR-Schleife, um Felder
       print $data[$c] . "<br>\n";            // des Arrays auszugeben
   }
}
fclose ($handle);
?>
```


----------



## WIK-Lars (27. März 2007)

Ok, danke!


----------



## WIK-Lars (27. März 2007)

Ich habe Dein Beispiel mal ausprobiert und weiß jetzt, wo der Haken ist: das Array besteht immer nur aus einem Feld. Das ist doch schon merkwürdig, denn im Browser wird folgendes ausgegeben:


1 fields in line 1: 
Vorname;Name;Postleitzahl;Ort

1 fields in line 2: 
Lars;Schmidt;63303;Dreieich
1 fields in line 3: 
Lars;Schmidt;33102;Paderborn

1 fields in line 4: 
Jens;Schmidt;;Saerbeck
1 fields in line 5: 
Anke;Schmidt;;Warendorf

Das heißt, in meinem Fall trennt fgetcsv nicht die Zeile an den Stellen des Semikolons in verschiedene Felder. Hm...eigentlich dachte ich, genau dafür wäre fgetcsv da...anscheinend kann die Funktion aber nur mit Komma...?


----------



## atcq (3. Juli 2007)

naja, wenn du der funktion alle parameter übergeben hättest die sie braucht um auch mit semikolon umzugehen hätte es vielleicht geklappt ...



> ```
> fgetcsv ($handle, 1000, ";");
> ```



statt nur:




> ```
> fgetcsv ($datei, 10);
> ```


----------

