csv lesen

EGJSoldier

Erfahrenes Mitglied
Hallo zusammen,
ich habe mal wieder ein Problem. Und zwar möchte ich mit PHP eine CSV Datei einlesen. Nur irgendwie ließt er bei mir nur die erste Zeile aus. Kann mir vielleicht jemand weiterhelfen

PHP:
<?php
   $Zeilen = 1;
   $Dateizeiger = fopen("SB53963.csv", "r");
   $Daten = fgetcsv($Dateizeiger, 1000, ";");
     for($i = 0; $i < $AnzahlDerFelder = count($Daten); $i++){
		 if($Daten[$i] != ''){
           echo 'Array['.$i.'] = '.$Daten[$i].'<br />';
		 }
		 else{
			echo 'Array['.$i.'] = * <br />'; 
		 }
     }
     echo"</p><br />";
   fclose($Dateizeiger);
?>

Danek schon mal im vorraus.

MfG
EGJsoldier
 
Vielleicht liegt hier der Fehler:
Code:
$AnzahlDerFelder = count($Daten); $i++){

EDIT: fgetcsv() liest auch immer nur eine Zeile weiter ein! Siehe php.net.
Du kannst dir auch eine eigene Funktion bauen:

PHP:
functioin GetCSV($str, $celldelimiter=";", $linedelimiter="\n")
{
  $lines = explode($linedelimiter, $str);
  for ($i=0; $i<count($lines); $i++)
  {
    $lines[$i] = explode($celldelimiter, $lines[$i]);
  }
  return $lines;
}

$filename = "test.csv";
$content = GetCSV(file_get_contents($filename));

echo $content[0][1];  // Gibt den zweiten Wert in der ersten Zeile aus!
 
Zuletzt bearbeitet:
So ich bin es nochmal. Und zwar habe ich jetzt noch ein Problem:
PHP:
while(($Daten=fgetcsv($Dateizeiger, 1000, ";"))!==FALSE){
	$AnzahlDerFelder = count($Daten);
	echo"<p><b>".$AnzahlDerFelder." Felder in Zeile ".$Zeilen.":</b><br>";
	$Zeilen++;
	for($i=0; $i<$AnzahlDerFelder; $i++){
		if($content[$Zeilen][$i] != '""'){
		  echo $content[$Zeilen][$i]."<br>";
		}
		else{
                  //hierum geht es sich gerade
		  for($Zeilen=$Zeilen;$content[$Zeilen][$i]!='""';$Zeilen-1){
			  if($content[$Zeilen][$i]!='""'){
				echo $content[$Zeilen][$i];  
			  }
		  }
		}
	}
	echo"</p>";
}
Und zwar will ich, dass wenn ein Feld leer ist, dass er immer zeilenweise zuückgeht bis er eine Zeile gefunden hat, die nicht leer ist und diese dann ausdruckt. Wo liegt jetzt der Fehler in dem Code

MfG
EGJSoldier
 
In der For-Schleife muss das -= heißen!:
PHP:
for($Zeilen=$Zeilen;$content[$Zeilen][$i]!='""';$Zeilen-=1){ 
              if($content[$Zeilen][$i]!='""'){ 
                echo $content[$Zeilen][$i];   
              }
 
Ok, dass habe ich jetzt auch gemacht, aber da tut sich irgendwie nichts. Also das ergebniss ist das selbe.. Er zeigt nichts an.
 
Geht das so überhaupt

PHP:
$Zeilen-=1

muss man da nicht

PHP:
$zeilen--

schreiben?

Vielleicht geht es ja so, habe es nur noch nie in der Schreibweise gesehen.
 
Das ist völlig das gleiche.
$i-- ist nur ein Kürzel für $i-=1.
Aber man sollte hier kein --$i benutzen!

Von mir aus könnt ihr auch das Kürzel verwenden, doch bei größeren Zahlen als 1 müsst ihr die andere Variante nutzen!
 
$zeilen=$zeilen?
Bist du da sicher

Sowas hier macht wahrscheinlich mehr Sinn
PHP:
for($j=$i; $content[$Zeilen][$u]!='""';$j--){
	if($content[$Zeilen][$j]!='""'){
        echo $content[$Zeilen][$j];  
    }
}
 
Zurück