joerg
Avatar joerg
Themenersteller
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)

Adventskalender mit SVG und PHP

am 30.11.2013, 18:55 Uhr eröffnete joerg folgenden Thread
Sonstige    4014 mal gelesen    19 Antwort(en).

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


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools

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

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

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

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!

matthes
Avatar matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
am 30.11.2013, 19:07 Uhr schrieb matthes

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!

joerg
Avatar joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
am 30.11.2013, 19:26 Uhr schrieb joerg

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


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools

matthes
Avatar matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
am 30.11.2013, 19:26 Uhr schrieb matthes

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!

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

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

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

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!

joerg
Avatar joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
am 30.11.2013, 22:12 Uhr schrieb joerg

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


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools

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

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


Make Seitenreport great again!

KlausO
Avatar KlausO
Rentner
Guru (141 Beiträge)
am 01.12.2013, 20:00 Uhr schrieb KlausO

Hallo,

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

MfG KlausO Derschongespanntistwieesweitergeht...


http://www.photospuren.de
Photographen + Ahnenforschung



« zurück zu: Sonstige

Das Seitenreport Forum hat aktuell 5274 Themen und 36108 Beiträge.
Insgesamt sind 48346 Mitglieder registriert.