[PHP] CSV-Datei auslesen?

BartTheDevil89

Devilution Media
ID: 87739
L
2 Mai 2006
3.960
103
Hallo,

also ich möchte ein CSV-Datei auslesen, dafür nutze ich ja fgetcsv. Über das manuel hab ich jetzt den Code hier zusammengestellt:
PHP:
<?php
$row = 1;                                   
$handle = fopen ("testdatei.csv","r");             
while ( ($data = fgetcsv ($handle, 1000, ",")) !== FALSE ) { 
                                          
   $num = count ($data);                    
                                      
   print "<p> $num fields in line $row: <br>\n";
   $row++;                               
                                             
   for ($c=0; $c < $num; $c++) {             
       print $data[$c] . "<br>\n";            
   }
}
fclose ($handle);
?>

Dabei kommt jetzt immer sowas bei raus:

1 fields in line 2:
1036143;"Blub2";"";"Blub1";"Blub2";"Blub3";28973468;"Blub4";"Blub5";1.00;"0";"0.00"
........

Jetzt muss ich ja aber diese Daten noch irgendwie allein bekommen, bzw. sie auch allein ansprechen können:

$a = 1036143;
$b = Blub2
$c = Blub1
....

Kann mir dafür jemand nen Tipp geben?

Danke für die Hilfe

EDIT: Damit hat sich die Hilfe schon erledigt, denn jetzt weiß ich, wies weitergeht! Danke
 
Zuletzt bearbeitet:
was php ist weißt du schon? mit $data[0] kannste dir das erste feld anzeigen lassen mit $data[1] das 2te usw... die for schleife ist nur als bsp eingebaut.
 
OK, hab leider mit der Funktion noch nie was am Hut gehabt, deshalb auch meine Unwissenheit dort. Hoffe das ist noch ok! :roll:

arg... was ich eigentlich damit sagen wollte. nicht einfach blind kopieren sondern verstehen!

das ist das grundgerüst: (was eine datei öffnet,eine zeile wird eingelesen und anhand des trennezichens geteilt und in data gespeichert)

PHP:
<?php                               
$handle = fopen ("testdatei.csv","r");             
while ( ($data = fgetcsv ($handle, 1000, ",")) !== FALSE ) { 

}
fclose ($handle);
?>

das trennezciehn ist das erste problem... bei dir werden die felder mit einem ; getrennt und nicht mit einem , (also mal ändern)

jetzt kannst du in der schleife jeweils auf die felder der aktuelle zeile zugreifen, mittels $data[pos]...

ich hab dein thema in lose4scripts gesehen... mal nen bsp wie man das lösen könnte.
csv:
PHP:
kategorie;wert;
kat1;blub
kat1;bla
kat2;hallo
kat3;gbitsnet
kat1;ahh
PHP:
<?php                               
$kategorien = array();
$handle = fopen ("testdatei.csv","r");             
while ( ($data = fgetcsv ($handle, 1000, ";")) !== FALSE ) { 
    $kategorien[$data[0]][] = $data[1];
}
fclose ($handle);


foreach($kategorien AS $name => daten) {
  echo $name;
  echo <select>';
   foreach($daten AS $values)
      echo '<option>'.$value.'</option>';
  echo '</select>';
  echo '<hr />';
}
?>