PHP: Creare un contatore di accessi con Php e Mysql
Il presente tutorial vi fonirà un semplice script per conteggiare e visualizzare gli acessi / le visualizzazioni di una o più pagine del vostro sito.
Le brevi righe che compongano il codice php si andranno ad integrare con un database MySQL quindi nel caso decidiamo di utilizzare questo script dove mettere in conto la necessità d'avere a disposizione almeno un suddetto database.
Ecco il codice php per effettuare il conteggio:
<?
// apriamo una connessione verso il database MySQL
require ("parametri_di_conessione_a_mysql.php");
mysql_connect("$DBHost","$DBUser","$DBPass");
// settiamo un numero di riferimento UNIVOCO per questa pagina
$numero_pagina = "1";
// update del numero di letture dell'articolo visualizzato
$hits=mysql("$DBName","SELECT conteggio FROM nome_tabella WHERE pagina LIKE '$numero_pagina'");
while ($row = mysql_fetch_row($hits)) {
$vecchie_letture=$row[0];
$update_hits = ($vecchie_letture + 1);
mysql("$DBName","UPDATE nome_tabella SET conteggio='$update_hits' WHERE pagina LIKE '$numero_pagina'");
}
?>
// inizio layout della pagina
<html>
<head>...ecc
// segue il codice html o php o altro per il layout della pagina
// potete inserire il contatore (visualizzatore del numero delle letture della presente pagina dove meglio credete)
// ecco il codice
<?
$visualizzazioni=mysql("$DBName","SELECT conteggio FROM nome_tabella WHERE pagina LIKE '$numero_pagina'");
while ($row = mysql_fetch_row($visualizzazioni)) {
$letture=$row[0];
echo "pagina visualizzata $letture volte dalla sua pubblicazione";
}
?>
Analizziamo il codice:
* Iniziamo con caricare i parametri per la connessione al database MySQL (Nome del Host, user, password e nome del database), poi apriamo una connessione con il comando "mysql_connect".
* per far funzionare il nostro script correttamente dobbiamo far in modo che ci sia un conteggio univoco delle visualizzazioni per ogni pagina del sito onde evitare che il conteggio venga effettuato su una singola matrice per tutte le pagine.
A questo scopo dobbiamo definire un valore univoco per ogni pagina per la quale vogliamo conteggiare le visualizzazioni: io ho scelto la strada più ovvia quella di utilizzare la numerazione crescente.
es. a.php -> $numero_pagina = "1"; - b.php -> $numero_pagina = "2"; ecc.
* prima di visualizzare la pagina (ovvero prima del codice "<html>") estraiamo l'ultimo numero della visualizzazioni salvato sul databse per la pagina che ha come riferimento $numero_pagina,
aggiungiamo "+1" alla variabile "$vecchie_letture" (aggiungiamo al conteggio l'attuale visualizzazione) ed effettuiamo l' "update" del valore attuale "$update_hits" conteggio sul database
* adesso per visualizzare il numero di visualizzazioni della corrente pagina e sufficiente interrogare il database con gli adeguati parametri
Passiamo adesso ad analizzare la struttura del database MySQL di questo applicazione.
nome tabella: "nome_tabella"
campo tipo Null valore predefinito
Conteggio int (6) no 0
pagina int (2) no 
Ecco il codice SQL per creare il database:
CREATE TABLE `nome_tabella` (`conteggio` INT(6) DEFAULT '0' NOT NULL, `pagina` VARCHAR(30) NOT NULL);
La presente configurazione del database accetta esclusivamente che le pagine venago catalogate per numerazione: int (2) nel campo "pagina" indica che il campo deve essere numerico e al massimo di 2 cifre quindi tale campo accetterà solo valori con queste caratteristiche; se si vuole catalogare in maniera diversa le pagine consiglio di impostare il campo "pagina" di tipo "text (20)" (il campo acetterà tutti i caratteri alfa-numerici fino ad un massino di lunghezza di 0 caratteri).
Come è facilmente immaginabile i dati del conteggio delle visualizzazioni posso essere anche arghiviati su file anziche in un database; questa alternativa può risultare molto utile nel caso in cui non abbiate a disposizione un database MySQL.