Ausgaben mit PHP

wal

Erfahrenes Mitglied
Hallo,

vielleicht sitze ich schon zu lange vorm Bildschrim, aber ich kann momentan nicht erkennen, warum ich keine Ausgabe erhalte.

Ich lese eine CSV-Datei ein und mach ein paar Berechnungen in einer Schleife. Verlasse ich diese und möchte nur mal zum Test auf diverse Einträge im Array zugreifen und diese auslesen und anzeigen - wird nichts angezeigt.

Ich finde den Grund momentan nicht ...

PHP:
 <?php
     $csv_daten="";
     $row = 1;
     $fileName="test.csv";
     $fp=fopen($fileName,"rb");
     while ( ($csv_daten= fgetcsv ($fp, 1000, ";")) !== FALSE ) 
     ...
     // Keine Änderungen an $csv_daten
     ...
     }
     fclose ($fp);
     print_r ($csv_daten[1]);
     echo $csv_daten[1];
     printf ($csv_daten);
?>

Weiß jemand Rat?

Vielen Dank im voraus...
 
Was zeigt denn var_dump($csv_daten) an? Am besten mal in der Schleife probieren, weil die Variable csv_daten eigentlich nur innerhalb dieser gültig ist, wenn sie nicht vorher deklariert wurde.
 
Ja, das dachte ich auch, von daher habe ich diese Variable auch zuvor mit einer Zuweisung belegt (deklariert/initialisiert). Ich dachte dies reicht aus ...

Ist denn so wie ich dies geschrieben die Variable $csv_daten vor der Schleife eine andere als in der Schleife?
 
Deine Variable $csv_daten ist nach den Schleifendurchläufen FALSE - genau das ist nämlich die Abbruchbedingung.
Wie Radhad richtig sagt, hast du nur in der Schleife die Daten in $csv_daten abgelegt. Machs doch einfach so:

PHP:
$data = array();

while ( ($csv_daten= fgetcsv ($fp, 1000, ";")) !== FALSE ) 
{
    ...

    $data[] = $csv_daten;
}

var_dump($data);
 
Hi m0rb,

danke für die Hilfe. Habe es ausprobiert. Leider erhalte ich einen Speicherüberlauf:

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 35 bytes) in D:\xampp\htdocs\rms\csv-test_2.php on line 6

Die Zeile 6 ist der Beginn der While-Schleife ...

Also die Testdatei enthält knapp 2800 Zeilen mit ca. 100 Spalten. Ist dies zu viel für ein Array?
 
Hi wal,

das hat nichts mit einer Größenbeschränkung des Arrays zu tun, sondern einfach mit dem Speicherlimit des Servers. Wenn du Zugriff auf die php.ini hast, kannst du dort das memory limit hoch setzen. Ansonsten wie Gumbo sagt, nur die benötigten Daten aus der CSV-Datei holen bzw. die Datensaätze schrittweise in eine Datenbank schreiben und dann selektiv abfragen.
 
Ja, leider ... das ist das Problem. Ich benötige eben alle Spalten und Daten aus dem File. Ich verstehe nur nicht ganz warum das ein Problem ist für PHP oder die Datenbank bzw. ein Problem sein sollte. Ist das jetzt ein Speicherproblem oder eher ein Laufzeitproblem?

Danke aber für eure Hilfen und Tipps ...
 
Es ist ein Speicherproblem:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 35 bytes) in […]

Was genau machst du denn mit den Daten? Und kannst du das nicht schrittweise in der Schleife machen?
 
Hallo Gumbo,

also ich habe den memory_limit Wert jetzt mal auf 1024MB gesetzt und immer noch die Fehlermeldung! :rolleyes:

Ich denke es wird kein Weg daran vorbeigehen es in einer Schleife einlesen zu lassen - Stück für Stück!

Diese Daten werden in erster Linie von uns dafür verwendet Kundendaten, -Termine, -Geräte etc. up to date zu halten und dies in solch riesigen Excellisten ja fast unmöglich ist (da ja auch Macros etc. noch darin existieren) habe ich es mir zur Aufgabe gemacht diese in eine Anwendung zu verpacken. Schritt zwei sollte dann sein, auch den Kunden selbst drauf zu lassen, um diese updaten zu können.

Ende des Jahres sollte so etwas mit Schritt eins zumindest für meine Kollegen stehen ... wenn ich es hinbekomme! :p
 
Zurück