Seite 1 von 1

csv-Daten lesen/schreiben

Verfasst: 19.06.2004 13:09
von exweised
hallo,
in einer meiner dateien ist eine liste gespeichert:
1000,blabla1
900,blabla4
30,blabla50
925,blabla7
800,blabla
...
die wollt ich jetzt mittels fgetcsv() auslesen und per rsort() sortieren und ausgeben. leider zeigt er mir alles mögliche an, nur halt den inhalt nicht.

muss ich irgendwas wichtiges beachten oder so? bin noch anfänger mit php und mein script sieht sicherlich katastrophal aus. vielleicht könnt ihr mir ja ein paar tipps geben oder so.

Code: Alles auswählen

		$fp = @fopen($datei, "r");
		if($fp == false) {
		    echo "Fehler! Keine Liste gefunden.\n";
		} else {
		    while(!feof($fp)) {
			$zeile = fgetcsv($fp, 54);
			rsort($zeile);
			if(count($zeile) >= 2) {
			    $zeile_array[] = $zeile;
			}
			foreach($zeile_array as $zahl => $name) {
			    echo $zahl . "&nbsp;" . $name . "<br>";
			}
		    }
		}
		fclose($fp);

Verfasst: 19.06.2004 13:49
von PhilippK
Hast du dir das Beispiel unter http://de3.php.net/manual/de/function.fgetcsv.php mal angeschaut?

Gruß, Philipp

Verfasst: 19.06.2004 15:13
von exweised
danke. ;)

hab das jetzt so, aber anstatt mir die zahlen zu sortieren, tauscht er bloß die spalten gegeneinander. :( kann ich das irgendwie anders lösen?

Code: Alles auswählen

		    while(!feof($fp)) {
		        $data = fgetcsv($fp, 54);
		        rsort($data);
			echo $data[0] . "&nbsp;" . $data[1] . "<br>";
		    }

Verfasst: 19.06.2004 16:58
von PhilippK
Bekommst du mit dieser Lösung überhaupt mehr als eine Zeile ausgegeben? Ich habe da so meine Zweifel dran...

Gruß, Philipp

Verfasst: 19.06.2004 17:09
von exweised
doch, bekomme alles ausgegeben. bloß die sortierungen hängt leider noch.

Verfasst: 19.06.2004 17:39
von PhilippK
Sorry - hatte da was falsch gelesen.

Versuch mal:

Code: Alles auswählen

$data = array(); // Wir initialisieren ein Array
while(!feof($fp))
{
    $data[] = fgetcsv($fp, 54); // und fügen jede Zeile dem Array hinzu
}

// hier fehlt noch die Sortierung

foreach($data as $rowdata)
{
    echo $rowdata[0] . "&nbsp;" . $rowdata[1] . "<br>";
}
Du musst erst alle Daten einlesen, bevor du sie ausgibst (sonst kann das mit dem Sortieren auch nicht klappen).
Die Sortierung fehlt noch - die ist da auch etwas komplexer (siehe [php:array_multisort] - vielleicht hat aber jemand gerade die passenden Zeilen parat.

Gruß, Philipp

Verfasst: 19.06.2004 21:06
von exweised
bei der ausgabe stand dann nur array array da. dann habe ich bei der schleife bei $data[0] und $data[1] einfach $data[0][0] und $data[1][1] gemacht. jetzt zeigt er mir aber nur die erste zeile an, so oft wie einträge in der datei stehen. :(

Verfasst: 19.06.2004 22:30
von PhilippK
Tja, man sollte nicht das Ursprungs-Array sondern nur den einen Wert abfragen...
Das Script oben ist geändert (vorletzte Zeile)

Gruß, Philipp

Verfasst: 20.06.2004 11:44
von exweised
ach, ich bin ja auch bekloppt. darauf hätte ich auch kommen können. danke dir. ;)