csv, einzelne zeile nach datum auslesen...
haplo
- php
Hi Leute,
ich bin ein ziemlicher anfänger was php angeht und bin gerade dabei mich in die materie einzuarbeiten. da ich zu meinem problem leider kein tutorial gefunden habe wende ich mich an dieses forum.
ich habe auf meiner homepage einen terminkalender, wobei die daten in einer csv datei gespeichert sind. die datei ist folgendermaßen aufgebaut:
datum (dd;mm;yyyy);uhrzeit;ort;veranstaltung
ich möchte nun aus der csv datei immer die zeile auslesen, in der sich der nächste anstehende termin befindet und diese dann auf der startseite ausgeben. so spare ich mir die arbeit immer den termin auf der startseite zu ändern.
für anregungen, vorschläge und tipps wäre ich echt dankbar...
viele grüsse, haplo
Hello,
für anregungen, vorschläge und tipps wäre ich echt dankbar...
CSV-Datei einlesen
Nach Termin sortieren
Aktuelle Zeit feststellen
ersten Termin suchen, der größer ist, als die aktuelle Zeit
Termin ausgeben
Kleine Helferlein:
Funktion fgetcsv()
PHP-Arrays und Array-Funktionen
Funktion date()
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hi Tom,
ich habe mich mal drangesetzt und ein wenig herumgebastelt, weiß aber nicht,
ob der anfang so schon mal richtig ist. mit den array funktionen komm ich aber
leider nicht so zurande. würde mich über weitere hilfe freuen. hier also mein
anfang:
<?php
$filename = "termine/termine.csv";
$id = fopen($filename, "r");
while ($data = fgetcsv($id, filesize($filename), ";"))
$termin[] = $data;
fclose($termin);
$date = date("d.m.Y")
echo "....";
}
?>
ich hoffe das geht soweit. ich habe die csv datei ausgelesen und das datum
mit date() bestimmt und will am ende eine zeile ausgeben. ich weiß aber nicht
wie es weiter geht.
viele grüsse,
haplo
echo $begrüßung;
ich habe mich mal drangesetzt und ein wenig herumgebastelt, weiß aber nicht,
ob der anfang so schon mal richtig ist.
[...]
ich hoffe das geht soweit.
Auf Hoffnung sollte man beim Programmieren nicht setzen. Lass dir den Inhalt deiner Variablen ausgeben. Bei einfachen (skalaren) Varaiblen reicht oft schon ein echo $variable. Arrays kann man mit print_r($array) abfragen. (Vorher ein <pre> erhöht die Übersichtlichkeit der Ausgabe.) In hartnäckigen Fällen kann man auch var_dump() verwenden, das zeigt gleich noch den Typ der Variablen mit an.
echo "$verabschiedung $name";
Hello,
<?php
$filename = "termine/termine.csv";
$id = fopen($filename, "r");
while ($data = fgetcsv($id, filesize($filename), ";"))
$termin[] = $data;
fclose($termin);$date = date("d.m.Y")
echo "....";
}
?>
ich hoffe das geht soweit.
Nicht wirklich.
Es gibt kein Gesetz, dass es verbietet, in einer CSV-Datei Leerzeilen stehen zu haben.
Laut Manual liefert PHP dann zwar immer noch ein Array, das dann aber nur ein Feld hat mit dem Wert NULL. Aber ich behaupte, dass das auch schon anders war, und einfach nur ein Leerstring geliefert wurde. Außerdem könnten die CSV-Zeilen auch eine unterschiedliche Anzahl von Feldern haben. Auch das sollte man bei der Auswertung berücksichtigen. Die fehlenden füllt man dann einfach auf und weist ihnen NULL zu.
Wegen der Sortiererei ist es am besten, wenn Du die erhaltenenen Zeilenarrays in ein "Spaltenarray" umkopierst. Such mal im Archiv nach dem Begriff "category:php author:tom Spaltenarray" , da soltest Du fündig werden.
Und dann bist Du eigentlich schon fast fertig.
Aktueles Datum bestimmen und in die passende Form bringen.
Die Spalte mit dem Datum sortieren lassen. Du hast ja hoffentlich einen Timestamp oder die ANSI-Notation für das Datum verwendet?
Na, und dann die Spalte einfach mit Foreach() bis zur passenden Stelle durchlaufen, Schleife mit break abbrechen und den Key besorgen.
Über den Key (das könnte die Zeilennummer der CSV-Datei sein) kannst Du die Daten wieder zusammenkramen und ausgeben.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom