Clicks auf ein Element zählen?
Re: Clicks auf ein Element zählen?
Kunde will dafür nichts ausgeben.
Also wenn in den letzten 10 Jahren keiner das Script angemeckert hat: für mich keinen Aufwand treiben.
Und vor allem: ich mach damit unendlichen Reichtum und kann Euch dafür nichtmals zu einem Steak einladen. Das ist schon irgendwie peinlich.
Also wenn in den letzten 10 Jahren keiner das Script angemeckert hat: für mich keinen Aufwand treiben.
Und vor allem: ich mach damit unendlichen Reichtum und kann Euch dafür nichtmals zu einem Steak einladen. Das ist schon irgendwie peinlich.
- Tommy Herrmann
- Site Admin
- Beiträge: 7758
- Registriert: So 6. Dez 2020, 07:37
- Wohnort: Berlin
- Kontaktdaten:
Re: Clicks auf ein Element zählen?
Moin Werner,Werner-Zenk.de hat geschrieben: Mi 7. Feb 2024, 19:01 Ich habe den Klickzähler aktualisiert und die JavaScript-Funktion: Intl.NumberFormat hinzugefügt.
Die Zahlenwerte werden dadurch formatiert, wenn diese mal jenseits der 1000 sind: zb: 1.645 oder: 179.521
habe diese Änderung natürlich gleich eingebaut und den Zähler mal temporär auf 1068 gesetzt. Der Tausender-Punkt wird bei mir nicht angezeigt

https://www.mobirise-tutorials.com/News ... /#Download
Nachtrag:
… wird doch angezeigt - aber erst nach einem Klick.
Das heißt aber auch, dass der Punkt sich nur darstellt, wenn jemand auch klickt. Das ist sicherlich so nicht gewollt, denn hier soll ja das angegebene Zahlenformat auch ohne Klick angezeigt werden.
Das aktuelle Script:
Code: Alles auswählen
<script>
window.addEventListener("DOMContentLoaded", () => {
document.querySelectorAll("a[data-button]").forEach((element) => {
element.setAttribute("title", "Download");
element.addEventListener("click", (e) => {
let id = e.target.dataset.button;
// Eintagen - EDIT Tommy - Pfad angepasst
fetch(`counter/counter.php?id=${id}`)
.then(() => {
// Auslesen - EDIT Tommy - Pfad angepasst
fetch(`counter/counter.php?da=${id}`)
.then((antwort) => {
return antwort.text();
})
.then((antwort) => {
document.querySelector(`[data-count="${id}"]`).textContent = new Intl.NumberFormat("de-DE").format(antwort) + ' x';
});
});
});
});
});
</script>
- Werner-Zenk.de
- Mitglied (Level 10)
- Beiträge: 755
- Registriert: Di 8. Dez 2020, 19:42
- Wohnort: Bamberg
- Kontaktdaten:
Re: Clicks auf ein Element zählen?
Moin Tommy,
ersetze im PHP-Teil der Datei index.php:
durch:
ersetze im PHP-Teil der Datei index.php:
Code: Alles auswählen
$clicks[$id] = '<span data-count="' . $id . '">' . $hits . ' x</span>';
Code: Alles auswählen
$clicks[$id] = '<span data-count="' . $id . '">' . number_format($hits, 0, ",", ".") . ' x</span>';
Werner
https://werner-zenk.de
https://werner-zenk.de
- Tommy Herrmann
- Site Admin
- Beiträge: 7758
- Registriert: So 6. Dez 2020, 07:37
- Wohnort: Berlin
- Kontaktdaten:
Re: Clicks auf ein Element zählen?
... ah - OK - mache ich gleich ...
- Tommy Herrmann
- Site Admin
- Beiträge: 7758
- Registriert: So 6. Dez 2020, 07:37
- Wohnort: Berlin
- Kontaktdaten:
Re: Clicks auf ein Element zählen?
ja - wird alles richtig angezeigt - nur ist jetzt meine CSS weg.
Muss man da noch meine Class in PHP woanders dran bauen
P.S.:
Quatsch - hatte meine class="counter" vergessen
Danke Dir
Muss man da noch meine Class in PHP woanders dran bauen

P.S.:
Quatsch - hatte meine class="counter" vergessen

Code: Alles auswählen
// EDIT Tommy - class="counter" hinzugefügt
$clicks[$id] = '<span class="counter" data-count="' . $id . '">' . number_format($hits, 0, ",", ".") . ' x</span>';
Danke Dir

- Tommy Herrmann
- Site Admin
- Beiträge: 7758
- Registriert: So 6. Dez 2020, 07:37
- Wohnort: Berlin
- Kontaktdaten:
Re: Clicks auf ein Element zählen?
Ich habe diesen Klickzähler / Counter heute als Tutorial mit aufgenommen. Man kann jeden Klick auf einen Link zählen und sogleich auch das Ergebnis anzeigen.
https://www.mobirise-tutorials.com/Tuto ... ounter.php
https://www.mobirise-tutorials.com/Tuto ... ounter.php
Re: Clicks auf ein Element zählen?
Klasse !
Echt gut !
Echt gut !
- zen2cool
- Mitglied (Level 6)
- Beiträge: 55
- Registriert: Do 24. Dez 2020, 14:01
- Wohnort: Belgium
- Kontaktdaten:
Re: Clicks auf ein Element zählen?
Hello,
I've been using it for 3 years to know how many times my scripts are downloaded.
And it works very well
Rudy
I've been using it for 3 years to know how many times my scripts are downloaded.
And it works very well
Rudy
Visit my website !
zen2cool pack V2.1 updated 09/01/2021
zen2cool pack V2.1 updated 09/01/2021
- Tommy Herrmann
- Site Admin
- Beiträge: 7758
- Registriert: So 6. Dez 2020, 07:37
- Wohnort: Berlin
- Kontaktdaten:
Re: Clicks auf ein Element zählen?
Moin Rudy,
since you are the ultimate JavaScript expert, how do you do it?
Definitely not with the script I have just presented, as that is quite new.
since you are the ultimate JavaScript expert, how do you do it?
Definitely not with the script I have just presented, as that is quite new.
- zen2cool
- Mitglied (Level 6)
- Beiträge: 55
- Registriert: Do 24. Dez 2020, 14:01
- Wohnort: Belgium
- Kontaktdaten:
Re: Clicks auf ein Element zählen?
Hallo,
Ich antworte etwas spät, entschuldigen Sie.
Ich verwende für das Downloadzähler-Modul kein JavaScript, sondern PHP.
Ich habe eine Datei „download.php“. Alle meine Links sind folgendermaßen strukturiert:
www.xxxxx.be/download.php??file=zzzzzzz.exe
Alle meine Download-Dateien befinden sich in einem gemeinsamen Verzeichnis, z. B. „Downloads“.
Ich benötige ein Verzeichnis namens „ew:"counter" mit einer Textdatei mit dem gleichen Namen wie die Download-Datei und der Erweiterung „.txt“, z. B. „zzzzzz.exe.txt“.
In dieser Datei muss lediglich „0“ (der Startpunkt des Zählers) eingegeben werden.
Jedes Mal, wenn Sie den Link aufrufen, erhöht das Download-Skript den Zähler um +1.
Um den Zähler anzuzeigen, führen Sie einfach Folgendes aus:
Hier ist der Code für die Datei dowload.php (er muss bearbeitet werden, um die beiden Verzeichnisse und die Umleitung im Falle einer fehlenden Datei anzugeben)
Ich antworte etwas spät, entschuldigen Sie.
Ich verwende für das Downloadzähler-Modul kein JavaScript, sondern PHP.
Ich habe eine Datei „download.php“. Alle meine Links sind folgendermaßen strukturiert:
www.xxxxx.be/download.php??file=zzzzzzz.exe
Alle meine Download-Dateien befinden sich in einem gemeinsamen Verzeichnis, z. B. „Downloads“.
Ich benötige ein Verzeichnis namens „ew:"counter" mit einer Textdatei mit dem gleichen Namen wie die Download-Datei und der Erweiterung „.txt“, z. B. „zzzzzz.exe.txt“.
In dieser Datei muss lediglich „0“ (der Startpunkt des Zählers) eingegeben werden.
Jedes Mal, wenn Sie den Link aufrufen, erhöht das Download-Skript den Zähler um +1.
Um den Zähler anzuzeigen, führen Sie einfach Folgendes aus:
Code: Alles auswählen
<? include "zzzzzzz.exe.txt"; ?>Downloads for zzzzzzz.exe file
Hier ist der Code für die Datei dowload.php (er muss bearbeitet werden, um die beiden Verzeichnisse und die Umleitung im Falle einer fehlenden Datei anzugeben)
Code: Alles auswählen
<?php
# Emplacement des dossiers pour les compteurs de téléchargement et les fichiers à télécharger
# (avec un / à la fin des chemins)
$hits = dirname(__FILE__).'/compteur/';
$downloads = dirname(__FILE__).'/downloads/';
#==============================================
/**
* Fonction qui comptabilise le nombre de téléchargements
*
* @param filename nom et emplacement du fichier des hits
**/
function hitsCounter($filename) {
$counter=0;
if(@file_exists($filename)) {
$f = @fopen($filename, "r");
@flock($f, LOCK_EX); //lock the file
$counter = intval(@fgets($f));
@fclose($f);
}
$f = @fopen($filename, "w");
@flock($f, LOCK_EX); //lock the file
@fwrite($f, $counter+1);
@fclose($f);
}
/**
* Protège une chaine contre un null byte
*
* @param string chaine à nettoyer
* @return string chaine nettoyée
*/
function nullbyteRemove($string) {
return str_replace("\0", '', $string);
}
$h_file = null; # fichier compteur de téléchargement
$d_file = null; # fichier à télécharger
# Détermination des noms des fichiers
if(isset($_GET['file']) AND !empty($_GET['file'])) {
$filename = basename(nullbyteRemove($_GET['file']));
$h_file = $hits.$filename.".txt";
$d_file = $downloads.$filename;
}
# Contrôle de l'existence du fichier à télécharger
if(!file_exists($d_file)) {
header('Location:https://www.unsitepourtous.be/mobi/404.php');
exit;
}
# Mise à jour du compteur de téléchargement du fichier
hitsCounter($h_file);
# Envoi du fichier à l'utilisateur
header('Content-Description: File Transfer');
header('Content-Type: application/download');
header('Content-Disposition: attachment; filename='.basename($d_file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: no-cache');
header('Content-Length: '.filesize($d_file));
readfile($d_file);
exit;
?>
Visit my website !
zen2cool pack V2.1 updated 09/01/2021
zen2cool pack V2.1 updated 09/01/2021
- Tommy Herrmann
- Site Admin
- Beiträge: 7758
- Registriert: So 6. Dez 2020, 07:37
- Wohnort: Berlin
- Kontaktdaten:
Re: Clicks auf ein Element zählen?
Hallo Rudy,
vielen Dank - thanks - bedankt
Here is my version of the click counter:
https://www.mobirise-tutorials.com/Tuto ... ounter.php
vielen Dank - thanks - bedankt

Here is my version of the click counter:
https://www.mobirise-tutorials.com/Tuto ... ounter.php
Code: Alles auswählen
<?php
// Klickzähler
// https://werner-zenk.de
$daten = 'data.txt';
$clicks_file = file($daten);
if (isset($_GET['id'])) {
if (count($clicks_file) > 0) {
for ($i = 0; $i < count($clicks_file); $i++) {
$temp = explode('|', $clicks_file[$i]);
if ($temp[0] == $_GET['id']) {
$link = $temp[2];
$temp[1]++;
}
$file[] = implode('|', $temp);
}
$string = implode("\n", $file);
$string = str_replace("\n\n", "\n", $string);
$fh = fopen($daten, 'w+');
flock($fh, 2);
fputs($fh, $string);
flock($fh, 3);
fclose($fh);
}
}
if (isset($_GET['da'])) {
foreach ($clicks_file as $key => $value) {
list($id, $anzahl) = explode('|', $value);
if ($id == $_GET['da']) {
echo $anzahl;
break;
}
}
}
Werner Zenk hat geschrieben:
Hinweise zum Betrieb vom Klickzähler
Die Datei "data.txt" hat folgenden Aufbau:
1|62|
2|31|
3|17|
...
* Der erste Wert einer Zeile, im Beispiel 1 und 2 ist die fortlaufende Nummer (ID).
* Danach kommt der Zähler
Tipp:
Da es bei vielen Zeilen, einmal zu Verwechslungen mit der ID kommen kann,
kann man hinter dem letzten Wert noch eine kurze Info schreiben -
Beispiel:
1|62|Link|
2|31|Download|
3|17|Extern|
English:
Instructions for Operating the Click Counter
The file "data.txt" has the following structure:
1|62|
2|31|
3|17|
...
The first value in each line, such as 1 and 2 in the example, is the sequential number (ID).
Following the ID is the counter value.
Tip:
To avoid confusion with the ID when there are many lines, you can add a brief description after the last value.
Example:
1|62|Link|
2|31|Download|
3|17|External|
- Tommy Herrmann
- Site Admin
- Beiträge: 7758
- Registriert: So 6. Dez 2020, 07:37
- Wohnort: Berlin
- Kontaktdaten:
Re: Clicks auf ein Element zählen?
Rudy,
That is wonderful!
That is wonderful!

- zen2cool
- Mitglied (Level 6)
- Beiträge: 55
- Registriert: Do 24. Dez 2020, 14:01
- Wohnort: Belgium
- Kontaktdaten:
Re: Clicks auf ein Element zählen?
Hallo,
Ich habe die Website aktualisiert, um sie leichter und schneller zu machen.
Ich habe die Website aktualisiert, um sie leichter und schneller zu machen.
Visit my website !
zen2cool pack V2.1 updated 09/01/2021
zen2cool pack V2.1 updated 09/01/2021
Wer ist online?
Mitglieder in diesem Forum: Bing [Bot] und 2 Gäste