Event-Kalender mit SQLite

PHP, CSS und JavaScript lernen. Anwendungen für Webseiten
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5867
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

Danke für diese Klarstellung, das wusste ich noch nicht.

... so - bin jetzt zurück und hab da wohl etwas komplett falsch gesehen und war ein Querdenker :D

Im Nachhinein fragt man sich - äh :confused:

Ich habe daraus schlichtweg nochmals ein JavaScript erträumt, was ja nicht nur vollkommener Quatsch ist, sondern auch noch vollkommen überflüssig, da ja die Datei "kalender.php" inkludiert ist und dort schon alles definiert ist. Habe das jetzt richtig gestellt:

https://www.mobirise-tutorials.com/Even ... -Liste.php

Sorry ....
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Werner-Zenk.de »

Quelltext gecheckt, passt perfekt :tu: (Huch, das reimt sich sogar :D )
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5867
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

... was ich aber schon interessant finde ist, dass Du wohl so ziemlich jeden Mist in ein <script> Tag </script> schreiben kannst, ohne dass da irgendein Browser meckert - GUT, dass es da noch den Browser "Werner" gibt :D
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5867
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

... ich hoffe jetzt nicht noch einen Denkfehler zu machen aber ich habe mal einfach das <p> Tag </p> in der Foreach-Schleife durch ein <div> Tag </div> erstezt und nun ist der Quellcode fehlerfrei, da ja ein <div>, im Gegensatz zu einem <p>, immer außen stehen darf :)

Code: Alles auswählen

foreach ($events as $event) {
    sscanf($event["datum"], "%4s-%2s-%2s %5s", $dbJahr, $dbMonat, $dbTag, $dbUhr);
    echo '<div>' . $dbTag . '.' . $dbMonat . '.' . $dbJahr . '&emsp;' . $dbUhr . ' Uhr - ' .
        $event["event"] . '<br>' . textFormatierung($event["beschreibung"]) . '</div>';
}
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Werner-Zenk.de »

Das wäre auch meine Lösung gewesen. Dann mit CSS, Absätze (margin) hinzufügen.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5867
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

... ja - die Idee kam mir vorhin auch schon, weil das ja nahtlos alle Events untereinander geschrieben hatte.

Ich habe jetzt diese class="abstand":

Code: Alles auswählen

.abstand {
  margin: 20px 0px 20px 0px;
}
mit an das <div> geschrieben:

Code: Alles auswählen

foreach ($events as $event) {
    sscanf($event["datum"], "%4s-%2s-%2s %5s", $dbJahr, $dbMonat, $dbTag, $dbUhr);
    echo '<div class="abstand">' . $dbTag . '.' . $dbMonat . '.' . $dbJahr . '&emsp;' . $dbUhr . ' Uhr - ' .
        $event["event"] . '<br>' . textFormatierung($event["beschreibung"]) . '</div><hr>';
}
Ich habe nun auch mein Tutorial dazu geschrieben:

https://www.mobirise-tutorials.com/Even ... -Liste.php
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Werner-Zenk.de »

Hi Tommy,
hast du dich schon gewundert, warum es dieses WE keine neue Version gab. Ich musste noch einige Dinge testen, bevor ich diese Version veröffentliche.

Version: 28.02.2022
Checkbox (Nachricht) - Benachrichtigung per E-Mail versenden (optional).
Passwortschutz für mehrere Benutzer.
Taste: [D] - Drucken (öffnet die Druckvorschau).

Benachrichtigungen per E-Mail versenden:
Rufen Sie die PHP-Datei über: "kalender.php?cron" mit einer Cron
1-mal am Tag auf. (http://de.wikipedia.org/wiki/Cron)
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5867
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

Hallo Werner,

supi !!!

... mache es nicht zu kompliziert, das wird sonst viele davon abschrecken. Den Alleskönner an Kalender gibt es doch schon mit der MySQL-Variante.

Leider habe ich heute keinerlei Zeit mehr zu gucken. Gab es wieder Datenbank-Änderungen oder nicht?
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Werner-Zenk.de »

Ja, es gab Änderungen in der Datenbank, die neue Spalte: "nachricht" mit dem Wert 0 belegen.
... mache es nicht zu kompliziert, das wird sonst viele davon abschrecken.
Darauf achte ich; Ich habe eine Option im Quelltext nicht hinzugefügt, die es dem Benutzer ermöglicht hätte, die Tage anzugeben wann die Benachrichtigung versendet werden soll.
Das muss man im Quelltext jetzt selbst anpassen: WHERE DATE(`datum`) = DATE('now','+1 day')
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5867
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

Hallo Werner,

ich habe die Umstellung so weit hin bekommen, verstehe aber nicht alles. Daher habe ich diese Version so jetzt noch nicht übernommen. Ich muss heute Morgen noch zu einem Arzt-Termin. Vielleicht hast Du ja eine Antwort für mich, wenn ich zurück bin.

1) Das mit der E-Mail funktioniert bei mir nicht. Wenn ich die Checkbox anhake - egal ob bei einem neuen Event oder bei einem geänderten Event, passiert gar nichts. Ich erhalte keine E-Mail.

2) Das mit dem "Cron" verstehe ich erst gar nicht. Wenn ich das aufrufe:

"kalender.php?cron"

... zeigt der Browser eine total leere Seite und ich wüsste nicht, was nun passieren sollte.

Wenn ich das im Skript richtig erkenne, steht ja dieser Cron-Job im Zusammenhang mit dem Senden der E-Mail (innerhalb dieser IF-Bedingung) - oder wie? Das verstehe ich komplett überhaupt nicht :(

3) Der Druck kann so nicht sein, hier wird nicht der Kalender ausgedruckt, sondern meine gesamte Webseite. Eigentlich müsste doch nur der Kalender als Bereich gedruckt werden, ähnlich meines Tutorials hier:

https://www.mobirise-tutorials.com/Busi ... print.html
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5867
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

Werner-Zenk.de hat geschrieben: Mo 28. Feb 2022, 17:37 Das muss man im Quelltext jetzt selbst anpassen: WHERE DATE(`datum`) = DATE('now','+1 day')
Ah - ich hatte nicht ganz richtig gelesen und zuerst einen Eintrag "heute" getestet. Nun habe ich entsprechend der Anweisung im Skript (+1 day) den Eintrag morgen eingetragen und anschließend "Cron" im Browser aufgerufen und erhalte eine Mail.

Es kann also immer nur ein ganz bestimmter, dort angegebener Tag, versendet werden. +2 days würde dann nur den Entrag von übermorgen senden. Wozu soll das überhaupt gut sein? Ich verstehe den Sinn dessen gar nicht.

Was ist einzutragen oder zu tun, wenn jeder Eintrag (auch 10 pro Tag) als E-Mail gesendet werden soll, z.B. für die kommenden 5 Jahre?

So wird ja gerade ausschließlich ein Eintrag am kommenden Tag als Mail gesendet und nur wenn ich "Cron" aufrufe ...

Ich glaube nicht, dass das irgendjemand versteht und bedienen könnte und wüsste das jetzt in meinem Tutorial noch gar nicht korrekt zu formulieren :angst: :confused:

Ich denke, das müsste bereits voreingestellt sein, dass immer eine Mail gesendet wird (ohne "Cron") und egal wann, sobald die Checkbox "Nachricht" angehakt wurde (dafür ist ja eine Checkbox auch gedacht). So ist das entschieden zu kompliziert und für jemanden, der sich damit nicht beschäftigt hat auch restlos unverständlich.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5867
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

Hallo Werner,

ich habe inzwischen das Update übernommen:

https://www.mobirise-tutorials.com/Even ... er-SQLite/

... und auch versucht das mit der E-Mail zu beschreiben:

https://www.mobirise-tutorials.com/Even ... html#email

Bist Du so nett und liest das mal Korrektur.

Ich muss aber definitiv, nach jedem Event-Eintrag mit Häkchen bei "Nachricht" immer wieder neu "cron" im "Firefox" Browser aufrufen, damit überhaupt eine E-Mail gesendet wird.

kalender.php?cron

... bist Du so nett und versuchst das nochmals zu erklären - danke ...
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Werner-Zenk.de »

Upps, nein nicht mit dem Firefox aufrufen, sondern beim Provider (Ionos) einen Cronjob (Cron, Crontab) anlegen.
Deswegen habe ich auch den Artikel zu Wikipedia verlinkt.

Bei Ionos ist dieser zu finden unter: Hosting-Übersicht > Weitere Funktionen > Cronjob-Manager.
1-mal am Tag die Datei: kalender.php?cron (als URL eintragen). Die E-Mail wird dann einen Tag vor dem Event gesendet.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5867
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

Ah - OK - so ist das, wenn man vor etwas ganz Neuem steht :eek:

Ich hatte noch nie etwas mit einem "Cronjob" zu tun - daher habe ich mich da etwas "neu" angestellt :verlegen:

Ich habe das jetzt mal bei 1und1 angelegt. Ist das so richtig?


Cronjob.png

Cronjob-Intervall.png


Auf jeden Fall besteht dort die Möglichkeit zum Testen und es kam sogleich (ganz richtig) eine Mail von meinen beiden Einträgen von morgen:


Mail.JPG


Man kann also so bestimmen, wann die Mail für Einträge automatisch gesendet wird, also auch z.B. 7 Tage vorher:

Code: Alles auswählen

WHERE DATE(`datum`) = DATE('now','+7 days')
Ist das so richtig verstanden?

Weiterhin wird durch das GET

Code: Alles auswählen

if (isset($_GET["cron"]))
überhaupt erst festgestellt, ob ein "Cronjob" angelegt wurde.
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Werner-Zenk.de »

So passt das bei 1und1, ich habe den Cronjob genauso angelegt.
Weiterhin wird durch das GET
überhaupt erst festgestellt, ob ein "Cronjob" angelegt wurde.
Damit soll zuerst einmal verhindert werden, dass die Funktion bei jedem Aufrufen der Datei gestartet wird.
Durch JavaScript wird diese Datei (kalender.php) praktisch bei jedem Klick aufgerufen.
Die Alternative wäre eine extra Datei dafür zu erstellen, aber das wollte ich nicht (wegen den wenigen Zeilen).

Ich habe meine Beschreibung zum Cronjob etwas angepasst, ich hoffe dass diese dadurch verständlicher wird:

Benachrichtigungen automatisch per E-Mail versenden:
Rufen Sie die PHP-Datei über: "kalender.php?cron" mit einer Cron
1-mal am Tag auf. Beim Provider muss dazu ein Cronjob angelegt werden
(http://de.wikipedia.org/wiki/Cron).




3xRyvi5iG2.png
Es wird auch angezeigt, wenn es ein Privater Event ist, ein Festtag oder eine Benachrichtigung.
Ich werde das aber wahrscheinlich wieder (kosmetisch) anpassen, weil so gefällt es mir nicht ganz ...
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5867
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

... und wo zum Teufel steht diese Beschreibung vom Cronjob bei Dir - ich habe die noch nirgendwo gesehen :eek: :confused:

... ich glaube, jetzt habe ich das auch verstanden - eigentlich ein tolles Tool so ein Cronjob :)
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Werner-Zenk.de »

In der lies_mich.txt direkt unterhalb des BBCodes Textes.
Aber die Änderung habe ich noch nicht gemacht, weil ich heute bis 11:30 Uhr gearbeitet habe.
So wichtig ist das auch nicht, werde erst am WE die nächste Version auf meiner HP stellen.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5867
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

ach Du meine Güte - das hatte ich sogar ins Englische übersetzt - ick brauch nen Schnaps :eek: :prost:
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5867
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

Vielleicht solltest Du in Zukunft in der Datei "lies_mich.txt" vermerken, bei welcher Version die Datenbank geändert werden muss und in welcher Form. Das fände ich recht wichtig.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5867
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

Moin Werner,

ich hatte ja nun gestern extra noch einen Eintrag am 03.03.2022 mit angehakter Checkbox "Nachricht" in den Kalender eingetragen:

https://www.mobirise-tutorials.com/Even ... er-SQLite/

... der Cronjob hat sich aber nicht gemeldet und ich habe keine Mail erhalten :confused:

Eingetragen ist ja "täglich" zwischen 0 und 6 Uhr, wie man oben im Screenshot erkennen kann.

Ich habe jetzt nochmals einen neuen Cronjob angelegt und 2 Einträge für den Cronjob gemacht - am 04.03. und am 05.03.2022. Ein neuer Test verlief wieder erfolgreich - dann sollte es doch eigentlich auch alles richtig sein.

... es ist doch richtig, dass man beim Cronjob dann die gesamte URL eintragen muss - oder habe ich da noch etwas falsch verstanden - also so:

Code: Alles auswählen

https://www.mobirise-tutorials.com/Event-Kalender-SQLite/kalender.php?cron
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 110 Gäste