• User

    Click counter per più bottoni nella stessa pagine

    Buongiorno a tutti. Ho questo semplice click counter che funziona benissimo, ma vorrei poter aggiungere più elementi cliccabili nella medesima pagina con archivio nello stesso file txt. Inoltre, il totale dei click scompare se si aggiorna la pagina, mentre vorrei che restasse sempre presente. È possibile? Potete aiutarmi? Grazie mille

    La fonte da cui ho preso il codice è questa: https://www.opentechguides.com/how-to/article/ajax/101/ajax-php-click-counter.html

    [HTML]<a href = "https://www.xxxxxxxxxx.com" target="_blank" data-pageref-id="pageA1234" onClick="onClick(this)">LinkA</a> - Clicks: <div class="display: inline" id="clicks"></div>

    <script>
    function onClick(e) {
    var id = e.getAttribute('data-pageref-id');
    var post = 'id='+id;
    var req = new XMLHttpRequest();
    req.open('POST', 'click-counter.php', true);
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    req.onreadystatechange = function(){
    if (req.readyState !== 4 || req.status !== 200) return;
    document.getElementById("clicks").innerHTML = req.responseText;
    };
    req.send(post);
    };
    </script>[/HTML]

    [PHP]<?php

    //Set path to the text file that stores counts
    $file = 'click-counter.txt';

    //Open the file in read write mode
    $fh = fopen($file, 'r+');

    //Assign the page referene posted from page to a variable
    $id = $_REQUEST['id'];

    //Initialize lines variable
    $lines = '';

    //Repeat until end of file
    while(!feof($fh)){

    //Split the line using comma delimiter
    $row = explode(',', fgets($fh));
    $pageref = trim($row[0]);
    $count = trim($row[1]);
    if(!empty($pageref)){
        if($pageref == $id){
         //Increment count
          $count++;
          echo $count;
        }
      
       //Append new line to text file
        $lines .= "$pageref,$count\r\n";
    }
    

    }

    file_put_contents($file, $lines);
    fclose($fh);

    ?>[/PHP]

    Nel file click-counter.txt:
    pageA1234,0
    pageB5678,0


  • User Attivo

    Ciao,

    quando usi fopen apri il file in modalità "a+"

    Quindi usa la funzione fwrite per aggiungere una stringa

    Es.

    [PHP]
    <?php
    $filename = 'file.txt';
    $handler = fopen($filename, 'a+');
    fwrite($handler, "Stringa di test");
    fclose($handler);
    [/PHP]


  • User

    Grazie mille, provo, ma se fosse possibile una risposta più esaustiva direttamente nel codice postato, mi sarebbe di maggior aiuto.


  • User Attivo

    Scusa non avevo letto bene quello che chiedevi, ignora il mio ultimo messaggio.

    Il codice del link funziona.

    Va messo solamente un controllo

    Al posto di questa riga

    [PHP]$count = trim($row[1]);[/PHP]

    metti

    [PHP]$count = isset($row[1]) ? trim($row[1]) : '0';[/PHP]

    Come mai il totale dei clic scompare se si aggiorna la pagina?

    Se vuoi aggiungere ulteriori valori puoi farlo direttamente nel file dopo l'ultimo valore

    pageA1234,12
    pageB5678,5
    nuovovalore,0


  • User

    Grazie e scusa se tardo a rispondere, ma non mi arrivano le notifiche dei nuovi messaggi, anche se le ho impostate. Non so perche il totale scompare quando si aggiorna la pagina, ma cosi e`. Intanto provo la soluzione che mi hai mandato. Buon pomeriggio e grazie ancora