PHP 7: Zahl auf Website nach bestimmten Zeitintervall automatisch erhöhen

von Deniz Cetin (Kommentare: 0)

So könnte ein eingebundener Counter aussehen!
So könnte ein eingebundener Counter aussehen!

Manchmal möchte man eine Zahl auf einer Website nach bestimmten Zeitintervallen erhöhen. In unserem Fall wollten wir dies anhand des Zählers beim Modul "Icon-Boxen mit Zähler" des RockSolid Themes "Tao" machen. Hierfür haben wir ein kleines Skript geschrieben.

Lösung

Anhand von Contao 4 wird die Lösung geschildert, wer das bei einem anderen CMS oder auf einer statischen Website einsetzen möchte, der braucht lediglich unser kleines Code-Schnipsel einzusetzen und einzubinden.

Im Contao-Ordner templates legen wir eine neue Datei counter.php an und fügen folgenden PHP-Code ein:

1 <?php
2 	$now = time();
3 	$start_date = strtotime("2018-01-15"); //Start-Datum
4 	$datediff = floor(($now - $start_date)/60);
5 	$datediff4 = $datediff * X;
6 	$zaehler = Y + $datediff4; 
7 	echo $zaehler;
8 ?>

Was passiert hier? In Zeile 3 geben wir ein Startdatum ein, ab dem der Zähler anfangen soll zu zählen. In Zeile 4 werden dann die Sekunden berechnet, die seit Beginn des angebenen Datums vergangen sind. Danach wird das durch 60 geteilt, um Minuten zu erhalten, damit der Zähler minütlich aktualisiert wird. In Zeile 5 kann man einen Wert X angeben, mit dem diese Zahl erhöht werden soll. In Zeile 6 kann man einen Startwert Y angeben, ab dem es losgehen soll und zuguter letzt wird in Zeile 7 ausgegeben.

Beispiel

Unser Zähler soll bei 100 anfangen und der Wert soll jeden Tag um 5 ansteigen.

Angenommen es ist 1 Uhr nachts und wir haben das heutige Datum angegeben, dann würde an dieser Stelle 3600 stehen, da seit 0 Uhr 60 Minuten und damit 3600 Sekunden vergangen sind.

Diese Sekundenzahl wird in diesem Fall durch 60 geteilt, um auf Minuten zu kommen. Ab hier ist es geschmackssache: Unser Counter soll sich minütlich ändern, deswegen haben wir es bei /60 belassen. Soll er sich stündlich ändern, würde man einfach eine /60 hinzufügen. Soll es sich nur täglich ändern? Dann hängen wir noch eine /24 hintendran. Das würde dann so aussehen:

4 	$datediff = floor(($now - $start_date)/60/60/24);

Bei Zeile 5 geben wir nun an, womit diese Zahl multipliziert wird. Möchte man also laut unserem Beispiel eine Zeil darüber täglich die Zahl um 5 erhöhen, so geben wir einfach statt dem X eine 2 ein. Da wir einfach dazuzählen möchten und nicht multiplizieren, einfach ein + statt dem * einsetzen.

5 $datediff4 = $datediff + 5;

In Zeile 6 legen wir noch zusätzlich einen Startwert fest, den wir statt Y reinschreiben, denn nicht jeder Counter soll bei 0 anfangen:

6 $zaehler = 100 + $datediff4;

In Zeile 7 wird das ganze dann ausgegeben.

In Contao 4 ausgeben via Insert-Tag

Das Ergebnis des Skripts kann man ganz einfach mit einem Insert Tag (OHNE Leerzeichen!) direkt auf der Website ausgeben lassen:

{{ file::counter.php }}

Fertig. Bei Fragen oder anderen Sonderfällen einfach ein Kommentar hinterlassen!

Ein Live-Beispiel ist auf der Startseite von unserem Kunden https://www.cargocowboys.de/ zu sehen!

Zurück

Einen Kommentar schreiben

Was ist die Summe aus 6 und 6?