Zum Inhalt springen
ThreadSonstige

Adventskalender mit SVG und PHP

Kategorie
Sonstige
Gelesen
4014
Antworten
19
Erstellt von: gelöschter Benutzer Datum: 30.11.2013, 18:55 Uhr
Archiv-KommentarArchiviert, nicht priorisiertCMS & technische Umsetzung

Redaktionelle Einordnung

Diese archivierte Diskussion behandelt Adventskalender mit SVG und PHP aus Sicht der Rubrik Webentwicklung Sonstige.

CMS- und Technikfragen sind heute besonders dann relevant, wenn sie Indexierung, Rendering, interne Verlinkung oder Relaunch-Risiken beeinflussen.

Sinnvoll nutzbar bleibt der Thread vor allem als historischer Kontext, für typische Fragestellungen und zur Einordnung älterer Empfehlungen.

Einige im historischen Thread genannte Tools, Dienste oder externe Links könnten heute nicht mehr verfügbar oder inhaltlich überholt sein. Nutzen Sie sie bitte nur mit zusätzlicher Prüfung.

Startbeitrag

Originaler Foreninhalt in modernisierter Darstellung.

Zur Kategorie
gelöschter Benutzer
Threadstart · Sonstige 4014 mal gelesen · 30.11.2013, 18:55 Uhr

Hallo

Ich habe mir heute mal ein einfaches Konzept überlegt, wie ich einen Adventskalender aufbaue.

Das Ergebnis wäre hier zu bewundern.

nevada-fields.de/advent/



Prinzip ein Hintergrundbild in einer SVG Datei was entweder durch ein Feld zum öffnen oder ein Bild überlagert wird.

Anhand eines Parameters einer dezimalen Zahl wird überprüft ob das Feld bereits angeklickt worden ist. Ersatzweise wäre da auch eine binäre Zahl mit 24 Stellen möglich.

Die robots.txt enthält einen Eintrag zur Sperrung der Urls mit Parameter.

Benötigt wird ein Array mit den Angaben die wechseln wie Bild welche Position unter Umständen Link und so weiter und natürlich welches Türchen geöffnet wird.

Die Keys in diesem Array sind so aufgebaut das für jeden Tag die Zahl des Tages minus eins die Potenz zu dem Faktor 2 darstellt.
Also der Key für den 24.12. wäre dann 8388608

Im Prinzip wird die Überprüfung ob das Türchen offen ist durch folgende Abfragen bewerkstelligt.

return new DateTime(null, new DateTimeZone('Europe/Berlin')) > new DateTime('2013-12-'.str_pad($tag, 2, "0", STR_PAD_LEFT).' 00:00:00', new DateTimeZone('Europe/Berlin'));


und in einer foreach Schleife läuft dann die Kontrolle ob das Türchen geöffnet worden ist.

$bin = str_split(str_pad(decbin($_GET['tag']), 24, "0", STR_PAD_LEFT));
if ($bin[24-$tag])
#Türchen ist geöffnet worden


Der vollständige Code enthält eben weitere Sicherheitsabfragen und so weiter und ich denke das Prinzip ist ausreichend geschildert worden.

Auf eine mögliche Alternative mit Javascript und speziell Ajax und Local Storage hatte ich keine Lust und auch keine Zeit nur um die Parameter nicht setzen zu müssen.

Ein Nachteil der Javascript Variante wäre auf jeden Fall gewesen das erst nach Auslesen des Local Storages bereits geöffnete Türchen per Ajax wieder aufgerufen werden müssten.

SVG erschien mir als Basis auch die geeignerte Variante gegenüber Alternativen wie Formular , Imagemap oder Hantieren mit div containern und absoluter Positionierung.

Gruß
Jörg

Antworten

10 Beiträge
Foren Moderator Content Gott (1886 Beiträge)
am 30.11.2013, 19:02 Uhr schrieb hansen
Antwort

Hallo Jörg,

könntest Du bitte vor Senden auf Vorschau klicken.
Bei Dir sind etliche Beiträge praktisch nicht lesbar.

Gruß
hansen


Nepal Rundreisen
Foren Moderator Evil Genius Content Halbgott (973 Beiträge)
am 30.11.2013, 19:03 Uhr schrieb matthes
Antwort

Hallo Jörg,

sehr interessant, danke für die Vorstellung.

Wäre es nicht schöner, für den GET-Parameter des Tages auch dessen Datum zu verwenden und die binäre Entsprechung über 2^$var-1 zu bekommen?
Dann wäre die URL "sprechender".

Gruß
Unverschämtthes


Make Seitenreport great again!
Foren Moderator Evil Genius Content Halbgott (973 Beiträge)
am 30.11.2013, 19:07 Uhr schrieb matthes
Antwort

Matthes schrieb:
2^$var-1


Äh... Moment, jetzt bin ich gedanklich durcheinander.
Wieso nimmst du nicht gleich die Tage als Keys?


Make Seitenreport great again!
gelöschter Benutzer
am 30.11.2013, 19:26 Uhr schrieb
Antwort

Hallo Hannelore

www.seitenreport.de/bug-report.html



Wäre damit dann erledigt.
Warum soll ich mir die Mühe machen wenn man das anders generell lösen kann.

Hallo Matthes

Weil ich die Tage auf die Weise im Parameter summiere.
Also geöffnet habe ich zum Tag x nur die ungeraden Tage
Trotzdem kann ich alle geraden tage noch im Nachhinein öffnen.

Prinzip error_reporting level unter PHP

de.php.net/manual/de/errorfunc.constants.php



Also nicht so einen einfachen Javascript Kalender wo ich nur den heutigen Tag öffnen kann.

Sorry aber ich bin jetzt von einem Adventskalender mit Schokolade ausgegangen der in der Wohnung steht und versuche den möglichst nachzubilden.

Was noch fehlt im Skript wäre umzuleiten auf einen Parameter Wert so das du nicht am vorigen Tag heute öffnest und dir dann heute kein Türchen mehr öffnen kannst. Heute baue ich das aber nicht noch ein.

Gruß
Jörg
Foren Moderator Evil Genius Content Halbgott (973 Beiträge)
am 30.11.2013, 19:26 Uhr schrieb matthes
Antwort

Bin heute echt gut drauf, total konzentriert...
Wenn du schon binäre Zahlen nimmst, wieso dann keine Bit-Operatoren? Dieses str_*-Konstrukt ist gar nicht mal so schön. Einfallsreich, aber nicht schön.


Make Seitenreport great again!
Foren Moderator Content Gott (1886 Beiträge)
am 30.11.2013, 19:32 Uhr schrieb hansen
Antwort

Hallo Jörg,

joerg schrieb:
Warum soll ich mir die Mühe machen wenn man das anders generell lösen kann.


damit alle was davon haben, solange dieses Problem noch besteht.
Wem nützt Dein Beitrag, wenn man nur die Hälfte davon lesen kann?

Gruß
hansen


Nepal Rundreisen
Foren Moderator Evil Genius Content Halbgott (973 Beiträge)
am 30.11.2013, 19:33 Uhr schrieb matthes
Antwort

joerg schrieb:
Warum soll ich mir die Mühe machen wenn man das anders generell lösen kann.


Weil es deine Beiträge unleserlich macht und du Lesern damit helfen würdest.

joerg schrieb:
Weil ich die Tage auf die Weise im Parameter summiere.
Also geöffnet habe ich zum Tag x nur die ungeraden Tage
Trotzdem kann ich alle geraden tage noch im Nachhinein öffnen.


Ah, habe noch einmal geklickt, der Wert für Tag ändert sich, wenn ich ein Türchen anklicke. Interessanter Ansatz. Etwas schwer zu überschauen, weil man zur Zeit natürlich noch wenig Türen öffnen kann.
Das ist natürlich nicht dumm. Allerdings ermöglicht das umso mehr den Einsatz der Bit-Operatoren.

joerg schrieb:
Sorry aber ich bin jetzt von einem Adventskalender mit Schokolade ausgegangen der in der Wohnung steht und versuche den möglichst nachzubilden.


Ich auch! Jetzt brauchen wir nur noch eine Möglichkeit, Schokolade herunterzuladen.


Make Seitenreport great again!
gelöschter Benutzer
am 30.11.2013, 22:12 Uhr schrieb
Antwort

Hallo Matthes

Okay du meinst also der Vergleich

return $_Get[\'tag\'] & $key;

sollte den Code verbessern. Sehe ich genauso aber an die BIT Operatoren hatte ich nicht mehr gedacht. Allein aus dem Grunde da ich die nicht alltäglich einsetzen muss.

Das wäre dann mit den Bit Operatoren dann auch eine Ausgangsbasis für den Punkt den ich noch nicht umgesetzt habe mit der Umleitung zu dem Parameter wenn der entsprechende Tag noch nicht aktuell ist.

Danke für diese Anregungen.

Okay dann kommen wir zu dem Punkt wie laden wir Schokolade herrunter.

Aussehen und Form könnten wir auch durch eine SVG darstellen.
Mit Geschmack und Nährwerten würde es da noch einiger Überlegungen bedürfen wie wir diese Punkte noch darstellen können.

Knacken der Schokolade könnten wir durch eine Audio Datei wahrscheinlich kompensieren.

Gruß
Jörg

Foren Moderator Evil Genius Content Halbgott (973 Beiträge)
am 01.12.2013, 18:14 Uhr schrieb matthes
Antwort

Hinter dem ersten Türchen war Fellmer Lloyd. Da hab ich mich gefreut!


Make Seitenreport great again!
gelöschter Benutzer
am 01.12.2013, 20:00 Uhr schrieb
Antwort

Hallo,

ich habe mich über den Adventskalender und über Fellmer Lloyd gefreut - tolle Idee für einen Kalender - Danke.

MfG KlausO Derschongespanntistwieesweitergeht...