Seite 1 von 2

Einfacher Kalender mit PHP

Verfasst: Mi 30. Nov 2022, 08:24
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:

Re: Einfacher Kalender mit PHP

Verfasst: Mi 30. Nov 2022, 11:00
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!?

Re: Einfacher Kalender mit PHP

Verfasst: Mi 30. Nov 2022, 11:23
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)

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 09:17
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

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 10:29
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

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 10:38
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

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 11:09
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),

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 11:28
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

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 11:39
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>

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 11:44
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?

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 11:53
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>

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 11:55
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 ...

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 11:59
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.

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 12:01
von Tommy Herrmann
ja - ich warte mal ab ...

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 12:15
von Tommy Herrmann

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 12:46
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>

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 13:41
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

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 15:16
von Klaus
Na vielleicht ist's in der neuen Beta 5.7.1 schon erledigt?
What's new:
* Fix for anchors

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 15:46
von Tommy Herrmann
habe jetzt noch ca. 30 Minuten und bekomme dann erst einmal kurz Besuch - aber hört sich gut an ...

Re: Einfacher Kalender mit PHP

Verfasst: Mi 7. Dez 2022, 15:57
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