Alle Kategorien
Suche

Terminkalender in PHP programmieren - so geht's

Inhaltsverzeichnis

Terminkalender sind praktisch.
Terminkalender sind praktisch. © Thorben_Wengert / Pixelio
Wenn Sie Ihre Termine in einem selbst programmierten Terminkalender speichern möchten, können Sie dies relativ einfach mit PHP und MySQL machen. Erfahren Sie hier, wie Sie dies beispielhaft Schritt für Schritt tun können.

SQL-Datenbank erstellen

Um die Daten für Ihren Terminkalender zu speichern, sollten Sie dies am besten mit einer SQL-Datenbank machen.

  1. Erstellen Sie dafür eine neue Tabelle, die Sie zum Beispiel "terminkalender" nennen.
  2. Erzeugen Sie danach so viele Spalten, wie Sie wahrscheinlich brauchen werden. Sie sollten dabei mindestens die spalten "id", "datum", "titel" und "text" verwenden.
  3. Mit "id" können Sie die einzelnen Daten direkt zuordnen und behalten damit den Überblick. Stellen Sie bei "id" am besten die Werte "int", "auto_increment" und "primary" fest.
  4. Das Datum Ihres Eintrages können Sie dann in der Spalte "datum" eingeben. Verwenden Sie als Typ "date".
  5. Den eigentlichen Inhalt des Termineintrag können Sie dann bei "titel" und "text" festlegen, wobei Sie natürlich auch noch weitere Informationen in anderen Spalten wie zum Beispiel "ort" oder "kategorie" festlegen könnten. Setzen Sie für diese Spalten den Typ "text" fest.

Tabellenstruktur des Terminkalenders

Kümmern Sie sich als Nächstes um die Gestaltung Ihres Terminkalenders.

  • Am einfachsten können Sie dies machen, indem Sie die Terminen chronologisch nach den Monaten untereinander mit einer Tabelle ausgeben lassen.
  • In der obersten Zeile könnte dabei der aktuelle Monat stehen.
  • Die folgenden Zeilen wären dann die chronologisch geordneten Einträge des Monats, wobei Sie zum Beispiel in der linken Spalte das Datum bzw. den Tag angeben könnten und in der rechten Spalte dann die restlichen Informationen wie den Titel und den Text zu dem Termineintrag.
  • So könnte eine Tabelle zum Beispiel so aussehen:
    <table border='0' width='100%'>
    <tr><td colspan='2'>Monat</td></tr> (Erste Zeile mit 2 verbundenen Spalten)
    <tr><td width='100'>Datum</td><td>Infos</td></tr> (Spalte "Datum" ist 100px breit, die Spalte "Infos" ist variabel)
    </table>

Dynamische Ausgabe mit PHP

Zuletzt müssen Sie die Einträge aus Ihrer Datenbank noch dynamisch ausgeben lassen.

  • Als erstes müssen Sie sich mit der Datenbank verbinden. Fügen Sie dazu ganz oben in die erste Zeile ein:
    <?php
    $mysqlhost = ""; (SQL-Server; meistens "localhost")
    $mysqluser = ""; (Ihr SQL-Benutzer)
    $mysqlpass = ""; (Ihr SQL-Passwort)
    $mysqldb = ""; (Ihr Tabellenname, z.B. "terminkalender")
    $dbh = mysql_pconnect($mysqlhost, $mysqluser, $mysqlpass);
    mysql_select_db($mysqldb, $dbh);
    ?>
  • Als Nächstes müssen Sie nun im Body-Bereich Ihrer Datei ein paar Variablen festlegen, zumindestens das aktuelle Jahr und den Startbeginn für die Schleife, mit der Sie die Monate des Jahres ausgeben lassen:
    $jahr=date('Y'); (Aktuelles Jahr)
    $monat=1; (Schleife beginnt bei "1", also Januar)
  • Nun erstellen Sie die Schleife für die Ausgabe, wobei Sie bis "12" zählen lassen und nach jeder Aktion den Wert um eins ("++") erhöhen:
    for($monat; $monat<="12"; $ monat ++)
    {
    }
  • Anschließend lassen Sie sich für jeden Monat innerhalb der Schleife (also zwischen "{ }") die Werte aus der Datenbank ausgeben. Dafür prüfen Sie zunächst mit einer SQL-Abfrabe, ob es Werte für diesen Monat gibt:
    $count = mysql_query("SELECT id FROM terminkalender WHERE MONAT(datum)='$monat' AND JAHR(datum)='$jahr'", $dbh);
    $num = mysql_num_rows($count);
  • Sofern es mehr als einen Eintrag geben sollte, lassen Sie sich dann die Werte wie folgt ausgeben
    if($num>0)
    {
    echo "<table border='0' width='100%'>";
    echo "<tr><td colspan='2'>”.$monat.”</td></tr>”; (gibt den aktuellen Monat als Wert aus)
    $srv = "SELECT * FROM terminkalender WHERE MONAT(datum)='$monat' AND JAHR(datum)='$jahr ORDER BY datum";
    $query = mysql_query($srv, $dbh);
    while($row = @mysql_fetch_array($query))
    {
    echo "<tr>";
    echo "<td width=’100’>”.$row['datum’].”</td>”;
    echo "<td>”.$row['title’].”<br />”.$row['text’].”</td>”;
    echo "<tr>";
    }
    echo "</table>";
    }
  • Dadurch erzeugen Sie für jeden einzelnen Eintrag des aktuellen Monats mit der "while"-Schleife eine neue Zeile mit dem Datum und dem Titel bzw. dem Text.
  • Denken Sie daran, dass Sie vor dem PHP-Code "<?" und danach "?>" schreiben müssen und Ihre Datei die Endung "php" haben muss, damit Ihr PHP-Code auch richtig erkannt und verarbeitet werden kann. 

Optionale Erweiterungen

Sie können die Ausgabe anschließend noch etwas erweitern, weil zum Beispiel der Monat lediglich als Zahl stehen würde. 

  • Um den Monat als Text ausgeben zu lassen, könnten Sie eine php-Funktion erstellen, die Sie oben unterhalb Ihrer SQL-Verbindung einfügen. 
  • In dieser erzeugen Sie ein Array, also eine Art Tabelle für einzelne Werte, in dem Sie jeder Monatszahl den Monatsnamen zuweisen.
  • function writeMonatlang(&$monat_lang, $monat)
  • {
    $monat_array = array(1 => "Januar", 2 => "Februar", 3 => "M&auml;rz", 4 => "April", 5 => "Mai", 6 => "Juni", 7 => "Juli", 8 => "August", 9 => "September", 10 => "Oktober", 11 => "November", 12 => "Dezember");
    $monat_long=$monat_array[$monat];
    }
  • Sie können dann in Ihrer Schleife statt "echo "<tr><td colspan='2>”.$monat.”</td></tr>”;" das schreiben:
    writeMonatlang($month_lang, $monat);
    echo " echo "<tr><td colspan='2>”.$month_long." </td></tr>”;
  • Dadurch rufen Sie erst die Funktion mit dem aktuellen Monat (als Zahl) auf und lasse sich dann den Monatsnamen ausgeben.
helpster.de Autor:in
Kevin Höbig
Kevin HöbigKevin ist ein alter Hase bei HELPSTER. Als Webdesigner und Mediengestalter, der auch auf journalistische Erfahrung zurückblicken kann, beschäftigt er sich nicht nur privat mit technischen Themen. Dank seines Wissens hilft er anderen oft mit praktischen Tipps weiter.
Teilen: