logo

- Titolo: "Contatore d'accessi in PHP/MySQL"
- Tratta dal sito: http://www.scriptforwebmaster.com/imparare
- Link alla notizia: http://www.scriptforwebmaster.com/imparare/view.php?id=16




Il presente tutorial vi fonir? un semplice script per conteggiare e visualizzare gli acessi / le visializzazioni 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 decidiato di utilzzare 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
requir ("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 conessione 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"
campotipoNullvalore predefinito
Conteggioint (6)no0
paginaint (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.


Pagina tratta dal sito ScriptForWebamster.com - Tutti i diritti riservati