Event-Kalender mit SQLite

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

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

Moin Werner,

ja genau - das ist ja das Problem, wenn das Bild nicht via CSS zentriert wird - und gerade dann, wenn es eine optische Mitte hat. Dann ist eben ein mittig aufgenommenen Objekt, mit den anderen Seitenverhältnissen am Handy, gar nicht mehr mittig.

Am Desktop stelle ich z.B. die Monatsbilder auf einer Breite von ca. 1290px dar. Die Höhe ist mit 175px angegeben. Am Handy verringert sich diese Breite nun auf 360px, also auf knapp 30% der Originalbreite, bleibt aber in der Höhe gleich bei 175px.

Daher wird, wenn das Bild nicht mittels CSS zentriert angezeigt wird, es um ca. 2/3 der Bildbreite nach rechts raus geschoben, denn es wird über den linken Rand des Bildes mittels "cover" an die Seitenverhältnisse angepasst. Daher ist es eigentlich zwingend notwendig die Bilder zu zentrieren und auch die Höhe am Handy zu verringern, da sonst eben ein zu großer Teil des Bildes einseitig abgeschnitten wird.

Natürlich kommt es letztendlich auch auf das Bild selbst an, ob die Darstellung am Handy eben aussieht 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 »

Moin Tommy,
ich werde diese Einstellung auch übernehmen: 50% 50% / center center;

klar muss das dann jeder selbst für die eigenen Bilder anpassen. Es kann ja
sein das jemand sein Logo oben in die linke Bildhälfte eingefügt hat, und dieses immer mit angezeigt werden soll.

Ich habe es gerade noch einmal im Firefox getestet, ALT + Umschalt + D müsste den Kalender anzeigen:

alt_umschalt_d.png
k.a. warum es bei dir nicht funktioniert?
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5922
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

oh - sorry - ja "Alt + Umschalt + Unterstrichener-Buchstabe" geht - ich hatte das immer nur mit "Alt + Buchstabe" versucht :doh:
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 »

Moin Tommy,
es gibt eine neue Version.

Checkbox (Festtag) - Ein fester Tag im Jahr, für Geburtstage, Feiertage etc. (optional).

Die Spalte festtag ist neu in die DB-Tabelle hinzugekommen.
Die Spalte ist ähnlich wie die Spalte privat mit den Werten 0 oder 1 belegt.
Dateianhänge
festtag.png
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5922
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

ah - OK - gute Idee - mache ich gleich doch mal ...
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 »

Die Idee hatte ich schon letzte Woche, nur ist mir kein passender Name für die Option eingefallen.
Jährliche Wiederholung war einfach zu lang :D
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5922
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

Werner,

Ich hätte da noch eine Frage.

Wenn ich eine neue Spalte in der Datenbank hinzufüge (wie jetzt "festtage"), dann steht ja als Wert zunächst "null" dort in der Spalte, den ich ja dann mit dem Wert "0" ersetzen muss.

Wie macht man das, dass man alle Felder auf einmal ersetzt?

Meine Datenbank ist ja inzwischen ganz schön angewachsen und ich habe so 80 Einträge dann einzeln mit "0" bestückt :eek:
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5922
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

Hallo Werner,

habe gerade erst Dein Skript "Events der nächsten Tage anzeigen" entdeckt und hier mal ausprobiert:

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

(Datei wird wieder gelöscht)

Eigentlich müsste da der BBCode noch entfernt sein oder eben auch wirken - oder meinst Du nicht?

... ich würde das nämlich ganz gerne mit einbauen ...
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5922
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

Ist das so richtig:

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

(Datei wird wieder gelöscht)

Code: Alles auswählen

<?php
// Event-Kalender mit SQLite
//  Events der nächsten 31 Tage (individuell einstellbar).

include "kalender.php"; // Dateipfad eventuell anpassen

$tage = 90; // Tage
$select = $db->query("SELECT `datum`, `event`, `beschreibung`
                      FROM `kalender`
                      WHERE (julianday(`datum`) - julianday('now')) >= 0 AND (julianday(`datum`) - julianday('now')) <= " . $tage . "
                      ORDER BY `datum` ASC");
$events = $select->fetchAll();
foreach ($events as $event) {
    sscanf($event["datum"], "%4s-%2s-%2s %5s", $dbJahr, $dbMonat, $dbTag, $dbUhr);
    echo '<p>' . $dbTag . '.' . $dbMonat . '.' . $dbJahr . '&emsp;' . $dbUhr . ' Uhr - ' .
        $event["event"] . '<br>' . textFormatierung($event["beschreibung"]) . '</p>';
}
?>

<script>
// Text formatieren
function textFormatierung($txt) {
  $txt = htmlspecialchars($txt);
  $txt = preg_replace_callback('#(( |^)(((http|https|)://)|www.)\S+)#mi', 'linkUmwandeln', $txt);
  $txt = preg_replace('/\[b\](.*)\[\/b\]/Uism', '<b>$1</b>', $txt); // [b]
  $txt = preg_replace('/\[i\](.*)\[\/i\]/Uism', '<i>$1</i>', $txt); // [i]
  $txt = preg_replace('/\[s\](.*)\[\/s\]/Uism', '<s>$1</s>', $txt); // [s]
  $txt = preg_replace('/\[q\](.*)\[\/q\]/Uism', '<q>$1</q>', $txt); // [q]
  $txt = preg_replace('/\[u\](.*)\[\/u\]/Uism', '<u>$1</u>', $txt); // [u]
  $txt = preg_replace('/\[c=(.*)\](.*)\[\/c\]/Uism', '<span style=\'color:$1\'>$2</span>', $txt); // [c=#FF0000] [c=green]
  $txt = preg_replace('/\[bc=(.*)\](.*)\[\/bc\]/Uism', '<span style=\'background:$1\'>$2</span>', $txt); // [bc=#FF0000] [bc=green]
  $txt = preg_replace('/\[center\](.*)\[\/center\]/Uism', '<div style="text-align:center;">$1</div>', $txt); // [center]
  $txt = preg_replace('/\[img=(.*)\](.*)\[\/img\]/Uism', '<figure><img src="$1" title="$2" alt="$2"><figcaption>$2</figcaption></figure>', $txt); // [img=url]
  $txt = preg_replace('/\[video=(.*)\](.*)\[\/video\]/Uism', '<figure><video controls><source src="$1"></video><figcaption>$2</figcaption></figure>', $txt); // [video=url]
  $txt = preg_replace('/\[youtube=(.*)\](.*)\[\/youtube\]/Uism', '<figure><iframe width="100%" height="360" src="https://www.youtube.com/embed/$1"></iframe><figcaption>$2</figcaption></figure>', $txt); // [youtube=ID] EDIT von Tommy
  $txt = preg_replace('/\[url=(.*)\](.*)\[\/url\]/Uism', '<a href="$1" style="text-decoration: underline;" class="text-primary" target="_blank">$2</a>', $txt); // [url] EDIT von Tommy
  return nl2br($txt, false);
}

// Link umwandeln - EDIT Tommy style="text-decoration: underline;" und class="text-primary"
function linkUmwandeln($hit) {
  $url = trim($hit[1]);

  if ((substr($url, 0, 7) != 'http://') && (substr($url, 0, 8) != 'https://')) {
    $url = "http://" . $url;
  }
  return ' <a href="' . $url . '" style="text-decoration: underline;" class="text-primary" target="_blank" rel="noopener">' . $url . '</a>';
}
</script>
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 »

:tu:

Bis auf den Code der zwischen <script></script> steht!

Füge da noch ein AND `privat` = 0 ein:

$select = $db->query("SELECT `datum`, `event`, `beschreibung`
FROM `kalender`
WHERE (julianday(`datum`) - julianday('now')) >= 0 AND (julianday(`datum`) - julianday('now')) <= " . $tage . "
AND `privat` = 0
ORDER BY `datum` ASC");
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5922
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

Ich werde das Script mit den Funktionen in Mobirise an das Ende vom <body> packen.

Wieso wird das sonst bei mir in der PHP-Datei mit angezeigt, das wird es doch in der Datei "kalender.php" auch nicht - ich glaube ich denke gerade dumm ...
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 »

Gefällt mir :tu:
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5922
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

darf das <p> nicht um ein <figure> Tag </figure> </p> stehen?

Der Quellcode meckert "verlorenes </p> End-Tag" - aus dem PHP-Skript zur Event-Anzeige.
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 »

The figure element represents some flow content, optionally with a caption, that is self-contained (like a complete sentence) and is typically referenced as a single unit from the main flow of the document.

Ich denke das liegt eher am iframe-Element!
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5922
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

... also so geht es und der Fehler wird nun nicht mehr angezeigt.

Es war zum einen das <div> bei "center" - habe ich als <span> gesetzt und das geht nicht :D - sollte dann wohl ein <p> werden ...

... und sowohl <figure> und <figcaption> - habe ich komplett entfernt (macht sowieso nichts, was ich nachvollziehen könnte)

In Datei kalender.php sieht das bei mir nun so aus:

Code: Alles auswählen

// Text formatieren
function textFormatierung($txt) {
  $txt = htmlspecialchars($txt);
  $txt = preg_replace_callback('#(( |^)(((http|https|)://)|www.)\S+)#mi', 'linkUmwandeln', $txt);
  $txt = preg_replace('/\[b\](.*)\[\/b\]/Uism', '<b>$1</b>', $txt); // [b]
  $txt = preg_replace('/\[i\](.*)\[\/i\]/Uism', '<i>$1</i>', $txt); // [i]
  $txt = preg_replace('/\[s\](.*)\[\/s\]/Uism', '<s>$1</s>', $txt); // [s]
  $txt = preg_replace('/\[q\](.*)\[\/q\]/Uism', '<q>$1</q>', $txt); // [q]
  $txt = preg_replace('/\[u\](.*)\[\/u\]/Uism', '<u>$1</u>', $txt); // [u]
  $txt = preg_replace('/\[c=(.*)\](.*)\[\/c\]/Uism', '<span style=\'color:$1\'>$2</span>', $txt); // [c=#FF0000] [c=green]
  $txt = preg_replace('/\[bc=(.*)\](.*)\[\/bc\]/Uism', '<span style=\'background:$1\'>$2</span>', $txt); // [bc=#FF0000] [bc=green]
  $txt = preg_replace('/\[center\](.*)\[\/center\]/Uism', '<span style="text-align:center;">$1</span>', $txt); // [center]
  $txt = preg_replace('/\[img=(.*)\](.*)\[\/img\]/Uism', '<img src="$1" title="$2" alt="$2">$2', $txt); // [img=url]
  $txt = preg_replace('/\[video=(.*)\](.*)\[\/video\]/Uism', '<video controls><source src="$1"></video>$2', $txt); // [video=url]
  $txt = preg_replace('/\[youtube=(.*)\](.*)\[\/youtube\]/Uism', '<iframe width="100%" height="360" src="https://www.youtube.com/embed/$1"></iframe>$2', $txt); // [youtube=ID] EDIT von Tommy
  $txt = preg_replace('/\[url=(.*)\](.*)\[\/url\]/Uism', '<a href="$1" style="text-decoration: underline;" class="text-primary" target="_blank">$2</a>', $txt); // [url] EDIT von Tommy
  return nl2br($txt, false);
}
P.S.

Habe wieder alles rückgängig gemacht, da sonst die Anzeigen falsch sind :(
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 »

Code: Alles auswählen

  <!-- BBCode to display -->
  <script>
    // Text formatieren
    function textFormatierung($txt) {
      $txt = htmlspecialchars($txt);
      $txt = preg_replace_callback('#(( |^)(((http|https|)://)|www.)\S+)#mi', 'linkUmwandeln', $txt);
      $txt = preg_replace('/\[b\](.*)\[\/b\]/Uism', '<b>$1</b>', $txt); // [b]
      $txt = preg_replace('/\[i\](.*)\[\/i\]/Uism', '<i>$1</i>', $txt); // [i] ...
Ich weiß nicht, was PHP-Code zwischen <script>-Tags zu suchen hat :confused:
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5922
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Event-Kalender mit SQLite

Ungelesener Beitrag von Tommy Herrmann »

oh - was habe ich denn da gemacht???

Ich bin gerade nicht zu Hause. Warum fehlt in Deiner Datei "kalender.php" das schließende Tag

?>

... oder was ist da passiert.

Ich muss nachher gucken.
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 »

Tommy Herrmann hat geschrieben: So 20. Feb 2022, 16:03 Warum fehlt in Deiner Datei "kalender.php" das schließende Tag
?>
... oder was ist da passiert.
Das passt schon so, danach kommt ja nix mehr, kein HTML und keine Textausgabe.

Ein schließender Tag erzeugt immer einen Zeilenumbruch bei der Ausgabe. Wenn eine Session oder eine Weiterleitung mit header("Location: ...") aufgerufen wird, darf zuvor nichts an den Browser gesendet werden (kein einziger Zeilenumbruch). Ansonsten würde die Session nicht gesetzt werden und eine Weiterleitung würde nicht stattfinden.

Ich habe erst gestern entdeckt das es eine read_me.txt Datei gibt Translated by Thomas Frei-Herrmann :tu:
Antworten

Wer ist online?

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