Clicks auf ein Element zählen?

Fragen und Diskussionen rund um Internet, Software und PC
stobi_de
Moderator
Moderator
Beiträge: 1332
Registriert: Di 11. Okt 2022, 06:30

Re: Clicks auf ein Element zählen?

Ungelesener Beitrag 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.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7758
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Clicks auf ein Element zählen?

Ungelesener Beitrag 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>
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: Clicks auf ein Element zählen?

Ungelesener Beitrag 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>';
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7758
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Clicks auf ein Element zählen?

Ungelesener Beitrag von Tommy Herrmann »

... ah - OK - mache ich gleich ...
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7758
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Clicks auf ein Element zählen?

Ungelesener Beitrag 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:
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7758
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Clicks auf ein Element zählen?

Ungelesener Beitrag 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
stobi_de
Moderator
Moderator
Beiträge: 1332
Registriert: Di 11. Okt 2022, 06:30

Re: Clicks auf ein Element zählen?

Ungelesener Beitrag von stobi_de »

Klasse !
Echt gut !
Benutzeravatar
zen2cool
Mitglied (Level 6)
Mitglied (Level 6)
Beiträge: 55
Registriert: Do 24. Dez 2020, 14:01
Wohnort: Belgium
Kontaktdaten:

Re: Clicks auf ein Element zählen?

Ungelesener Beitrag 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
Visit my website !
zen2cool pack V2.1 updated 09/01/2021
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7758
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Clicks auf ein Element zählen?

Ungelesener Beitrag 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.
Benutzeravatar
zen2cool
Mitglied (Level 6)
Mitglied (Level 6)
Beiträge: 55
Registriert: Do 24. Dez 2020, 14:01
Wohnort: Belgium
Kontaktdaten:

Re: Clicks auf ein Element zählen?

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

Visit my website !
zen2cool pack V2.1 updated 09/01/2021
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7758
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Clicks auf ein Element zählen?

Ungelesener Beitrag 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|

Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7758
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Clicks auf ein Element zählen?

Ungelesener Beitrag von Tommy Herrmann »

Rudy,

That is wonderful! :tu:

New Icons.jpg
Benutzeravatar
zen2cool
Mitglied (Level 6)
Mitglied (Level 6)
Beiträge: 55
Registriert: Do 24. Dez 2020, 14:01
Wohnort: Belgium
Kontaktdaten:

Re: Clicks auf ein Element zählen?

Ungelesener Beitrag von zen2cool »

Hallo,

Ich habe die Website aktualisiert, um sie leichter und schneller zu machen.
Visit my website !
zen2cool pack V2.1 updated 09/01/2021
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste