- Home
- Categorie
- Coding e Sistemistica
- PHP
- Click counter per più bottoni nella stessa pagine
-
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
-
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]
-
Grazie mille, provo, ma se fosse possibile una risposta più esaustiva direttamente nel codice postato, mi sarebbe di maggior aiuto.
-
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
-
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