Einfacher Kalender mit PHP

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

Einfacher Kalender mit PHP

Ungelesener Beitrag von Tommy Herrmann »

Kalender klein und als einfache Darstellung von einzelnen Monaten von Werner-Zenk.de.

Hier ein Beispiel auf meiner Tutorials-Seite:

https://www.mobirise-tutorials.com/Tuto ... lender.php


P.S.:

mir fällt da gerade noch etwas auf.

Der kleine Kalender zeigt am 01.01.2023 einen Montag an - das ist aber ein Sonntag :eek:
Klaus
Supporter
Supporter
Beiträge: 439
Registriert: Mi 21. Jul 2021, 00:43

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Klaus »

Das Skritp hat n BUG, Oktober 2023 ist es genau so.
Offensichtlich wird ein 1. an einem So. nicht richtig ausgewertet.

Vielleicht wäre es "günstiger" statt "w" ein "N" für die numerische Darstellung des Wochentags gemäß ISO-8601 zu verwenden ... oder ggf. verschiebt sich nur das Problem!?
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Tommy Herrmann »

jepp - das scheint es zu sein - danke Klaus :tu:

https://www.mobirise-tutorials.com/Test ... &year=2023

... ich muss das noch in der anderen Seite ändern (bin da gerade mit der neuesten BETA am werkeln)

P.S.:

ja - geht - habe es geändert:

https://www.mobirise-tutorials.com/Tuto ... p#Kalender



PHP - Manual:

https://www.php.net/manual/en/datetime.format.php

PHP hat geschrieben:
N ISO 8601 numeric representation of the day of the week 1 (for Monday) through 7 (for Sunday)

w Numeric representation of the day of the week 0 (for Sunday) through 6 (for Saturday)
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Tommy Herrmann »

Hallo Werner, hallo an Alle

ich brauche mal Deine Hilfe.

Ich bin gerade dabei die neueste v5.7.0 von gestern von Mobirise zu testen. Nun funktioniert die Navigation vom kleinen Kalender nicht mehr:

https://www.mobirise-tutorials.com/Tuto ... p#Kalender

Habe ich die ID="Kalender" vielleicht nicht ganz korrekt eingesetzt. Die Navigation ging zuvor, mit der neuen Version von Mobirise nicht mehr.

Die Parameter der Action-URL werden auch unten im Browser-Status korrekt angezeigt aber nicht ausgeführt. Liegt das jetzt an Mobirise oder könnte hier ein Fehler in meinem Code sein?

Der Link zum Januar 2023 sollte dann so in der URL stehen:

Code: Alles auswählen

https://www.mobirise-tutorials.com/Tutorials/Kalender.php?month=1&year=2023#Kalender
https://www.mobirise-tutorials.com/Tuto ... 3#Kalender

Code: Alles auswählen

                   <!-- Kalender -->
                    <?php
                    $date = date_create("now", timezone_open("Europe/Berlin"));
                    $month = $_GET["month"] ?? date_format($date, "n");
                    $month = (($month < 1) ? 12 : (($month > 12) ? 1 : $month));
                    $year = $_GET["year"] ?? date_format($date, "Y");
                    $elected = date_create($year . "-" . $month . "-01 00:00:00", timezone_open("Europe/Berlin"));
                    $columns = [];
                    $months = [1 => "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
                    $weekdays = ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"];

                    echo '<table>
                    <tr>
                    <th colspan="4">
                    <a href="?month=' . ($month - 1) . '&amp;year=' . $year . '#Kalender" class="kal">-</a>
                    ' . $months[date_format($elected, "n")] . '
                    <a href="?month=' . ($month + 1) . '&amp;year=' . $year . '#Kalender" class="kal">+</a>
                    </th>
                    <th colspan="3">
                    <a href="?month=' . $month . '&amp;year=' . ($year - 1) . '#Kalender" class="kal">-</a>
                    ' . date_format($elected, "Y") . '
                    <a href="?month=' . $month . '&amp;year=' . ($year + 1) . '#Kalender" class="kal">+</a>
                    </th></tr>' .
                    '<tr><th>' . implode('</th><th>', $weekdays) . '</th></tr>';

                    for ($i = 1; $i < date_format(date_modify(clone $elected, 'first day of this month'), "N"); $i++) {
                      $columns[] = "";
                    }

                    for ($days = 1; $days <= date_format($elected, "t"); $days++) {
                      $columns[] = ((
                     ($days == date_format($date, "j")) &&
                     ($month == date_format($date, "n")) &&
                     ($year == date_format($date, "Y"))) ? '<mark>' . $days . '</mark>' : $days);
                    }

                    foreach ($columns as $i => $column) {
                      echo '<td>' . $column . '</td>' . ((($i + 1) % 7) ? '' : '</tr><tr>');
                    }

                    echo '</tr></table>';
                    ?>
Ich habe das auch an den Support im Hersteller-Forum geschrieben, da ich mir eigentlich (fast) sicher bin, dass meine ID="Kalender" richtig eingesetzt ist:

https://forums.mobirise.com/discussion/ ... ent_104864


Komischer Weise funktioniert mit der gleichen und neuen v5.7.0 von Mobirise eine gleiche Navigation in meinem Gästebuch richtig:

https://www.mobirise-tutorials.com/Gast ... ontent1-aw
Klaus
Supporter
Supporter
Beiträge: 439
Registriert: Mi 21. Jul 2021, 00:43

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Klaus »

In der Entwicklerkonsole sieht man:

Code: Alles auswählen

Uncaught TypeError: URL constructor: ?month=1&year=2024#Kalender is not a valid URL.
    H https://www.mobirise-tutorials.com/Tutorials/assets/smart-cart/minicart-customizer.js:13
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Tommy Herrmann »

... danke

was heiß das jetzt? Hat das was mit der Datei minicart-customizer.js zu tun?

Hier exakt die gleiche Seite noch mit der v5.6.20 BETA (da funktioniert es):

https://www.mobirise-tutorials.com/Test ... p#Kalender
Klaus
Supporter
Supporter
Beiträge: 439
Registriert: Mi 21. Jul 2021, 00:43

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Klaus »

Ich kenne die MR Skripte ja nicht und weiß nicht für was das minicart Skript (bzw. die Anpassung von MR dazu) gut ist, man sieht nur dass dort ein "Click Listener" dran hängt und beim Klick knallt es hier beim Erzeugen einer neuen URL.

... könnte man debuggen und nachsehen was sich geändert hat, man kann das aber auch MR überlassen ...

Code: Alles auswählen

            document.addEventListener("click", function(a) {
                var b = a.target.getAttribute("href");
                if (b) {
                    var e = new URL(b),
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Tommy Herrmann »

Danke Dir Klaus,

das übersteigt auch meine Möglichkeiten weit :(

Ich wollte auch nur wissen, ob es da in meinem PHP vielleicht einen Fehler gibt. Das ist für mich ein BUG, der zwingend wieder weg muss. Das geht gar nicht.

Diese "Smart-Cart" Erweiterung ist von dem Drittanbieter "ElectricBlaze" (von Mobirise), da hat es schon sehr oft Probleme anderer Art gegeben.

Das Teil habe ich hier im gleichen Projekt:

https://www.mobirise-tutorials.com/Tuto ... -Cart.html

Das wird wohl auch der Grund sein, warum die Navigation mit ganz ähnlichen URL-Parametern an meinem Gästebuch (anderes Projekt) funktioniert, denn dort habe ich die Erweiterung "Smart-Cart" nirgendwo in Gebrauch.



... ob das zulässig ist weiß ich auch nicht:

Code: Alles auswählen

                    <!-- Kalender -->
                    <table>
                    <tr>
                    <th colspan="4">
                    <a href="?month=0&year=2022#Kalender" class="kal">-</a>
                    Januar
                    <a href="?month=2&year=2022#Kalender" class="kal">+</a>
                    </th>
                    <th colspan="3">
                    <a href="?month=1&year=2021#Kalender" class="kal">-</a>
                    2022
                    <a href="?month=1&year=2023#Kalender" class="kal">+</a>

... aber auch Mobirise schreibt ja die Anker so:

Code: Alles auswählen

<a href="Kalender.php#Kalender">Kalender</a>
und hier funktioniert es ja auch - bisher in allen Mobirise-Versionen:

https://www.mobirise-tutorials.com/Test ... p#Kalender
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Tommy Herrmann »

... ich habe hier mal jetzt diese Seite "Kalender.php" davor geschrieben:

https://www.mobirise-tutorials.com/Test ... lender.php

... geht aber auch nicht :(

Also muss der Fehler eigentlich im Update auf v5.7.0 von Mobirise liegen.

Code: Alles auswählen

                    <!-- Kalender -->
                    <table>
                    <tr>
                    <th colspan="4">
                    <a href="Kalender.php?month=11&year=2022#Kalender" class="kal">-</a>
                    Dezember
                    <a href="Kalender.php?month=13&year=2022#Kalender" class="kal">+</a>
                    </th>
                    <th colspan="3">
                    <a href="Kalender.php?month=12&year=2021#Kalender" class="kal">-</a>
                    2022
                    <a href="Kalender.php?month=12&year=2023#Kalender" class="kal">+</a>
Klaus
Supporter
Supporter
Beiträge: 439
Registriert: Mi 21. Jul 2021, 00:43

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Klaus »

Ich hab das "zulässig" (href) wieder rausgenommen ... Problem ist das sich das Skript vob EB anscheinend auf die Buttons "registriert" und dann aber mit dem href nicht klarkommt.

Soviel ich gesehen habe sind die Skripte zw. den 2 Versionen identisch, muss also noch an anderen Skripten/geänderter Codegenerierung liegen.

Schreibt doch mal ne komplette URL (incl. https ...) dann sollte es gehen.

... oder noch besser, nimmt das EB Skript auf der Seite raus, brauchen tust Du es doch eh nicht, oder?
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Tommy Herrmann »

nee - geht auch nicht:

Code: Alles auswählen

                   <!-- Kalender -->
                    <table>
                    <tr>
                    <th colspan="4">
                    <a href="https://www.mobirise-tutorials.com/Testseiten/Test/Test-Tutorials/Kalender.php?month=11&year=2022#Kalender" class="kal">-</a>
                    Dezember
                    <a href="https://www.mobirise-tutorials.com/Testseiten/Test/Test-Tutorials/Kalender.php?month=13&year=2022#Kalender" class="kal">+</a>
                    </th>
                    <th colspan="3">
                    <a href="https://www.mobirise-tutorials.com/Testseiten/Test/Test-Tutorials/Kalender.php?month=12&year=2021#Kalender" class="kal">-</a>
                    2022
                    <a href="https://www.mobirise-tutorials.com/Testseiten/Test/Test-Tutorials/Kalender.php?month=12&year=2023#Kalender" class="kal">+</a>
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Tommy Herrmann »

Beim Gästebuch habe ich allerdings noch ein JavaScript drinnen - das Problem gab es vor 5 Jahren schon einmal:

Code: Alles auswählen

 <!-- Reload für Gästebuchseiten -->
  <script>
      function myPage(seite) {
      window.location.href = 'Gastbuch.php?seite=' + seite + '#content1-aw';
  }
  </script>

Code: Alles auswählen

                      // Navigation Zurück /Weiter                      
                       if ($AnzahlDatensaetze > $EINTRAEGE_SEITE) {
                       print '<p>' . (($AktuelleSeite - 1) > 0 ? '<a href="?seite=' . ($AktuelleSeite - 1) . '#content1-aw" onclick="myPage(\'' . ($AktuelleSeite - 1) . '\')">&#9668; Zurück</a>&nbsp; ' : '') . ' ' .
                       (($AktuelleSeite + 1)  <= $Seitenanzahl ? '<a href="?seite=' . ($AktuelleSeite + 1) . '#content1-aw" onclick="myPage(\'' . ($AktuelleSeite + 1) . '\')">Weiter &#9658;</a>' : '') . '</p>';
                       }
https://www.mobirise-tutorials.com/Gast ... ontent1-aw

Ich weiß jetzt aber gerade nicht wie so ein Skript zum Neuladen für den Kalender aussehen müsste - mit den 4 möglichen Klicks.

... und warum ging es vorher astrein ...
Klaus
Supporter
Supporter
Beiträge: 439
Registriert: Mi 21. Jul 2021, 00:43

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Klaus »

Mit den neuen Links ist aber der Fehler in der Console weg -> das Skript registriert sich warum auch immer auf die Buttons.

Wie geschr. das könnte man alles nachsehen, oder einfach MR überlassen, vielleicht machen die ja was.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Tommy Herrmann »

ja - ich warte mal ab ...
Klaus
Supporter
Supporter
Beiträge: 439
Registriert: Mi 21. Jul 2021, 00:43

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Klaus »

Ich hab Deine Seite mal extrem verkleinert und etwas angepasst.
An den wenigen Zeilen Code sieht man schon dass das "Anpassungsskript" (minicart-customizer.js) von MR nicht mit solchen hrefs klar kommen.
Ich weiß nicht ob man durch eine "Variable" dem Skrip klar machen kann dass es die "eigenen hrefs" in Ruhe lassen soll.

Code: Alles auswählen

<!DOCTYPE html>
<html  lang="de">
<head>
  <meta charset="UTF-8">
</head>
<body>
                    <a href="?month=1&year=2023#abc">A</a>
                    - -
                    <a href="?month=3&year=2023#abc">B</a>

  <script src="assets/smart-cart/minicart.js"></script>
  <script src="assets/smart-cart/minicart-customizer.js"></script>
  
</body>
</html>
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Tommy Herrmann »

Klaus,

das ist alles Fummelkram.

Ich verstehe nicht, warum es zuvor ging und jetzt nicht mehr. Eigentlich müssen sie etwas negativ im Update verändert haben, dass das bewirkt.

> Mobirise hat soeben ein Update deswegen auf den "Smart Cart" erstellt - das hat aber bisher keine Änderung bewirkt :(

> oder ich verzichte auf den Anker, sodass die Seite mit dem Monats- oder Jahreswechsel wieder nach oben springt

> oder Werner schreibt mir ein JavaScript mit einem Neuladen der Seite inklusive Parametern und Anker-ID (ich schaffe das nicht, habe es schon versucht)

> oder ich verzichte auf diesen Kalender ganz - wäre aber schon blöd - eine solche Kapitulation wegen eines Updates.


Daher habe ich zunächst aufgegeben und den Kalender in den obersten Block gepackt :D

https://www.mobirise-tutorials.com/Tuto ... lender.php
Klaus
Supporter
Supporter
Beiträge: 439
Registriert: Mi 21. Jul 2021, 00:43

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Klaus »

Na vielleicht ist's in der neuen Beta 5.7.1 schon erledigt?
What's new:
* Fix for anchors
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Tommy Herrmann »

habe jetzt noch ca. 30 Minuten und bekomme dann erst einmal kurz Besuch - aber hört sich gut an ...
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Einfacher Kalender mit PHP

Ungelesener Beitrag von Tommy Herrmann »

Leider hat das mein Problem mit dem Anker nicht gelöst - hier diese Seite mit dem kleinen Kalender publiziert mit v5.7.1 BETA:

https://www.mobirise-tutorials.com/Test ... p#Kalender
Antworten

Wer ist online?

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