Tutorial Daten aus einer Textdatei lesen

Die PHP-Skripte zur Ausgabe der Inhalte von Textdateien beruhen auf dem Skript “Geburtstage anzeigen” von Webbausteine.de.

Bitte ladet Euch die ZIP-Datei zum besseren Verständnis bei Webbausteine.de herunter.

Ich habe hier zwei etwas unterschiedliche Beispiele erstellt:

  • Geburtstage - Originalskript von Webbausteine.de. Anzeige der eingetragen Geburtstage der kommenden 56 Tage
     
  • Tagesdatum - Anzeige eines Ereignisses des jeweilig eingetragenen Tagesdatums
     

 

Geburtstage

Hier wird eine TXT-Datei verwendet, die Ihr beliebig anpassen und erweitern könnt.

Achtet darauf, dass alle Textdateien in der Kodierung “UTF-8 ohne BOM” gespeichert werden, wenn Ihr den Zeichensatz “UTF-8” für Eure Seiten verwendet, damit die Umlaute und Sonderzeichen korrekt dargestellt werden. Am besten Ihr ladet Euch hierfür einen Editor wie Notepad++ herunter.

Hier ein Teil meiner TXT-Datei “geburtstage.txt”. Wie Ihr erkennen könnt, verwende ich einen senkrechten Strich | als Separator für die Funktion “explode”.

Peter|02|01|
Kirsten|22|01
Klaus|03|02|
Doris|16|02|
Sonja|10|03|

Hier das PHP-Skript zum Auslesen dieser TXT-Datei. Die Anzeige der kommenden Tage (hier 56) könnt Ihr natürlich anpassen.

<?php
  $tage = 56; // Zeige die Geburtstage der nächsten X-Tage an
  $geburtstage = file("./Daten/geburtstage.txt");
  $ausgabe = "";
  for ($zaehler = 0; $zaehler != $tage; $zaehler++) {
    $aktuell = date("d.m.Y", strtotime("+" . $zaehler . " day", time()));
    list($tag, $monat, $jahr) = explode(".", $aktuell);
    foreach ($geburtstage as $geburtstag) {
      list($name, $tag2, $monat2, $jahr2) = explode("|", $geburtstag);
      if ($tag2 == $tag && $monat2 == $monat) {
        $ausgabe .= '<b>' . $name . '</b><br>' .  datum($tag, $monat, $jahr) . '<br><br>';
      }
    }
  }
  if ($ausgabe != "") {
   echo '<p style="color: rgb(0,0,255);">Geburtstage in den nächsten ' . $tage . ' Tagen: ' . '<br><br>' . $ausgabe . '</p>';
  }
  else {
   echo '<p>In den nächsten ' . $tage . ' Tagen<br>hat niemand Geburtstag!</p>';
  }

  function datum($tag, $monat, $jahr) {
   $wt = getdate(mktime(0, 0, 0, $monat, $tag, $jahr));
   $tag = round($tag);
   $monat = round($monat);
   $tage = array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
   $monate = array(1=>"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
   return $tage[$wt["wday"]] . ", " . $tag . ". " . $monate[$monat] . " " . $jahr;
  }
?>

Stellt Eure Seite zur Anzeige der Skripte auf die Dateierweiterung .php um, damit das Skript am Server ausgeführt werden kann.

> Bearbeiten > Benutzerdefinierte Namen > Dateierweiterung > .php wählen

Zieht Euch ein Textfeld auf und fügt das Skript in den HTML-Code Editor des Textfeldes ein.

> Textfeld doppelklicken (Cursor blinkt) > Fenster “Text-Eigenschaften” > mittlere Button oben “Textfeld” > Button ”HTML” > Code einfügen

 

Tagesdatum

Hier wird eine CSV-Datei verwendet, die Ihr beliebig anpassen und erweitern könnt. Hier könntet Ihr aber ebensogut auch eine TXT-Datei verwenden.

Achtet darauf, dass alle Textdateien in der Kodierung “UTF-8 ohne BOM” gespeichert werden, wenn Ihr den Zeichensatz “UTF-8” für Eure Seiten verwendet, damit die Umlaute und Sonderzeichen korrekt dargestellt werden. Am besten Ihr ladet Euch hierfür einen Editor wie Notepad++ herunter.

Hier ein Teil meiner CSV-Datei “daten.csv”. Wie Ihr erkennen könnt, verwende ich einen senkrechten Strich | als Separator für die Funktion “explode”.

01.10.2014|Düsseldorf|Kaffeetrinken mit Erna. Kuchen muss selbst mitgebracht werden.
02.10.2014|Berlin|Übung zum Löschen meines Hauses, wäre schön wenn es nicht brennt.

Hier das PHP-Skript zum Auslesen dieser CSV-Datei. Die Anzeige erfolgt jeweils am Tagesdatum.

<?php
   $daten = file("./Daten/daten.csv");
   $counter = 0;
   foreach ($daten as $data) {
      list($datum, $ort, $thema) = explode("|", $data);
      list($tag, $monat, $jahr) = explode(".", $datum);
      if ($jahr == date("Y")) {
         if ($monat == date("m")) {
            if ($tag == date("d")) {
               $counter++;
               echo '<p><b>Heute:</b> ' . $datum . '<br><b>Ort:</b> ' . $ort . '<br><b>Thema:</b> ' . $thema . '</p>';
            }
         }
      }
   }
   if ($counter < 1) {
      echo '<p>Heute wurden keine Einträge gefunden!</p>';
   }
   // die folgende Zeile mit zwei Slash // deaktiviert. Diese zeigt die Gesamtanzahl der Einträge an
   // echo '<hr>Insgesamt ' . count($daten) . ' Einträge.';
?>

... fügt das Skript, wie bereits bei dem Skript “Geburtstage anzeigen”, in die HTML eines Textfeldes ein.

  • Bemerkung:
     
    • Wie Ihr bei meinen Skripten erkennen könnt, habe ich die jeweiligen TXT oder CSV Dateien in ein Verzeichnis “Daten” auf den Server kopiert, das in meinem Stammverzeichnis liegt und das ich zusätzlich mit einer .htaccess Datei geschützt habe. Da ich diese Skripte hier auf meiner Startseite, die auch im Stammverzeichnis liegt, eingebaut habe, ist die relative Pfadangabe mit einem Punkt ./ eingetragen (bleibe im gleichen Verzeichnis). Achtet also immer auf die korrekte relative Pfadangabe.

Viel Erfolg!

Tutorials von Thomas Frei-Herrmann

diese Seite weiter empfehlen


Counter Statistik