Seite 2 von 2

Re: Clicks auf ein Element zählen?

Verfasst: Mi 7. Feb 2024, 20:23
von stobi_de
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.

Re: Clicks auf ein Element zählen?

Verfasst: Do 8. Feb 2024, 05:19
von Tommy Herrmann
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
Moin Werner,

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 :confused:

https://www.mobirise-tutorials.com/News ... /#Download


Klickzähler mit Format Tausender-Punkt.jpg


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.

Klickzähler mit Format Tausender-Punkt - nach Klick.jpg


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>

Re: Clicks auf ein Element zählen?

Verfasst: Do 8. Feb 2024, 08:43
von Werner-Zenk.de
Moin Tommy,
ersetze im PHP-Teil der Datei index.php:

Code: Alles auswählen

$clicks[$id] = '<span data-count="' . $id . '">' . $hits . ' x</span>';
durch:

Code: Alles auswählen

$clicks[$id] = '<span data-count="' . $id . '">' . number_format($hits, 0, ",", ".") . ' x</span>';

Re: Clicks auf ein Element zählen?

Verfasst: Do 8. Feb 2024, 09:12
von Tommy Herrmann
... ah - OK - mache ich gleich ...

Re: Clicks auf ein Element zählen?

Verfasst: Do 8. Feb 2024, 09:16
von Tommy Herrmann
ja - wird alles richtig angezeigt - nur ist jetzt meine CSS weg.

Muss man da noch meine Class in PHP woanders dran bauen :eek:


P.S.:

Quatsch - hatte meine class="counter" vergessen :D

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 :cool:

Re: Clicks auf ein Element zählen?

Verfasst: So 28. Apr 2024, 13:17
von Tommy Herrmann
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

Re: Clicks auf ein Element zählen?

Verfasst: So 28. Apr 2024, 21:31
von stobi_de
Klasse !
Echt gut !

Re: Clicks auf ein Element zählen?

Verfasst: Mo 29. Apr 2024, 10:18
von zen2cool
Hello,

I've been using it for 3 years to know how many times my scripts are downloaded.

And it works very well

Rudy

Re: Clicks auf ein Element zählen?

Verfasst: Mo 29. Apr 2024, 12:37
von Tommy Herrmann
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.

Re: Clicks auf ein Element zählen?

Verfasst: Do 26. Jun 2025, 15:01
von zen2cool
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:

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;
	
?>


Re: Clicks auf ein Element zählen?

Verfasst: Do 26. Jun 2025, 15:49
von Tommy Herrmann
Hallo Rudy,

vielen Dank - thanks - bedankt :tu:

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|


Re: Clicks auf ein Element zählen?

Verfasst: Do 26. Jun 2025, 16:08
von Tommy Herrmann
Rudy,

That is wonderful! :tu:

New Icons.jpg

Re: Clicks auf ein Element zählen?

Verfasst: Fr 27. Jun 2025, 12:41
von zen2cool
Hallo,

Ich habe die Website aktualisiert, um sie leichter und schneller zu machen.