haplo: csv, einzelne zeile nach datum auslesen...

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

  1. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

  2. 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

    1. 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";

    2. 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

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau