Tutorial aktuelle Events aus einem Kalender monatlich anzeigen

Dieses Skript kann hilfreich sein, wenn man den Event-Kalender von Werner-Zenk.de bereits eingebaut hat, jedoch zusätzlich auf weiteren Seite nur die selbst eingetragenen Ereignisse anzeigen möchte.

In diesem Beispiel werden immer nur die Ereignisse des gerade aktuellen Monats angezeigt. So spart man sich viel Zeit die gleichen Ereignisse vielleicht doppelt eingeben zu müssen.

Für den Einbau in NOF stellt Ihr diese Seite auf die Dateierweiterung .php und kopiert lediglich dieses Skript in den HTML-Code Editor eines Textfeldes und passt den relativen Pfad zu der Datei

  • verbindung.php

entsprechend an. Bei mir liegt der eigentlich Kalender im Verzeichnis:

  • Kalender-Neu-2017-01/

            <?php
            // Event Kalender
            // Events des aktuellen Monats anzeigen

            include "../Kalender-Neu-2017-01/verbindung.php"; // Dateipfad eventuell anpassen

            $select = $db->query("SELECT `datum`, `event`
                                  FROM `" . $TABLE_PREFIX . "_kalender`
                                  WHERE YEAR(`datum`) = YEAR(NOW()) AND
                                        MONTH(`datum`) = MONTH(NOW())
                                  ORDER BY `datum` ASC");
            $events = $select->fetchAll(PDO::FETCH_ASSOC);
            foreach ($events as $event) {
             sscanf($event["datum"], "%4s-%2s-%2s %5s", $dbJahr, $dbMonat, $dbTag, $dbUhr);
             echo $dbTag . '.' . $dbMonat . '.' . $dbJahr . '&emsp;' . $dbUhr . ' Uhr - ' .
             $event["event"] . '<br>';
            }
            ?>

Um das Textfeld scrollbar zu machen (für viele Einträge), könnt Ihr diesem eine feste Höhe mit der CSS-Anweisung:

  • overflow: auto;

in den CSS-Eigenschaften des Textfeldes zuweisen.

Unten das Skript, das alle noch ausstehenden Events inklusive Beschreibung darstellt. Passt wieder den relativen Pfad zur Datei verbindung.php an, hier aus einem Unterverzeichnis dieses Projektes und tragt die maximal anzuzeigenden Events unter LIMIT ein (hier 20).

            <?php
            // extra Anzeige von Tommy
            date_default_timezone_set("Europe/Berlin");
            echo 'Die nächsten 20 Events ab dem' . ' ' . date("d.m.Y") . '<br><br>';

            // Event Kalender
            // Aktuelle Events anzeigen (mit Beschreibung)

            include "../../Kalender-Neu-2017-01/verbindung.php"; // Dateipfad eventuell anpassen

            $select = $db->query("SELECT `datum`, `event`, `beschreibung`
                                  FROM `" . $TABLE_PREFIX . "_kalender`
                                  WHERE `datum` >= NOW()
                                  ORDER BY `datum` ASC
                                  LIMIT 20"); // LIMIT 20 eventuell anpassen
            $events = $select->fetchAll(PDO::FETCH_ASSOC);
            foreach ($events as $event) {
             sscanf($event["datum"], "%4s-%2s-%2s %5s", $dbJahr, $dbMonat, $dbTag, $dbUhr);
             echo '<p><b>' . $dbTag . '.' . $dbMonat . '.' . $dbJahr . '</b>&emsp;' . $dbUhr . ' Uhr - ' .
             $event["event"] . '<br>' . $event["beschreibung"] . '</p>';
            }
            ?>

Unten das gleiche Skript, das die Ausgabe noch der Events auf z.B. 31 Tage inklusive Beschreibung begrenzt. Passt wieder den relativen Pfad zur Datei verbindung.php an, hier aus einem Unterverzeichnis dieses Projektes und tragt die maximal anzuzeigenden Events unter LIMIT ein (hier 80).

            <?php
            // extra Anzeige von Tommy
            date_default_timezone_set("Europe/Berlin");
            echo 'Events für 31 Tage ab dem' . ' ' . date("d.m.Y") . '<br><br>';

            // Event Kalender
            // Aktuelle Events anzeigen (mit Beschreibung)

            include "../../Kalender-Neu-2017-01/verbindung.php"; // Dateipfad eventuell anpassen

            $select = $db->query("SELECT `datum`, `event`, `beschreibung`
                                  FROM `" . $TABLE_PREFIX . "_kalender`
                                  WHERE (TO_DAYS(`datum`) - TO_DAYS(NOW())) >= 0 AND (TO_DAYS(`datum`) - TO_DAYS(NOW())) <= 31
                                  ORDER BY `datum` ASC
                                  LIMIT 80"); // LIMIT 80 eventuell anpassen
            $events = $select->fetchAll(PDO::FETCH_ASSOC);
            foreach ($events as $event) {
             sscanf($event["datum"], "%4s-%2s-%2s %5s", $dbJahr, $dbMonat, $dbTag, $dbUhr);
             echo '<p><b>' . $dbTag . '.' . $dbMonat . '.' . $dbJahr . '</b>&emsp;' . $dbUhr . ' Uhr - ' .
             $event["event"] . '<br>' . $event["beschreibung"] . '</p>';
            }
            ?>

Ich habe hier noch ein zusätzliches Skript für eine Scrollbar eingebaut, das ich in diesem Tutorial zusätzlich beschreibe.

Viel Spaß!

Tutorials von Thomas Frei-Herrmann

diese Seite weiter empfehlen


Counter Statistik