![]() |
|||||
Tutorial PHP | |||||
|
Home |
Tutorial PHP |
Art. # 100
Un AdServer in PHP e MySQL
Introduzione Il migliore sistema per gestire i banner nel proprio sito è quello di creare un sistema di AdServer basato su database. Nel nostro caso lo creeremo usando PHP e MySQL. Nello specifico si intende per AdServer un sistema di rotazione banner nel quale i dati (immagine e link) sono memorizzati nel database ed oltre a questi dati possiamo gestire anche altre importanti caratteristiche come il numero di impressions del banner sulla pagina ed il numero di click che il banner riceve, quindi calcolare il CTR, ovvero il rapporto percentuale di click erogati in funzione delle visualizzazioni (ovvero le impressions). Il database Creare nel proprio database MySQL una tabella di nome banner corredata dai seguenti campi e relativi tipi di dato:
Il campo del commento è ad uso interno, è un nome che si da al banner (o alla campagna pubblicitaria in questione) allo scopo di riconoscerla in fase di visualizzazione delle statistiche. Non esiste un campo per il CTR dato che si tratta di un valore calcolato al volo in funzione dei click e delle impressions generate. Il file di configurazione Si crei il file config.php e lo si corredi del seguente codice:
<?
$server = "nome_server";
$username = "nome_utente";
$password = "tua_password";
$database = "nome_database";
$cn = mysql_connect($server, $username, $password);
mysql_select_db($database, $cn);
?>
Inserire i propri dati di connessione al database nelle variabili che li richiedono; questo file sarà incluso in tutti i file del sito ed in particolare dei file che provvedono alla gestione dei banner, attraverso il seguente codice:
<?
include("config.php");
?>
Visualizzazione dei banner in rotazione Per visualizzare i banner non faremo altro che connetterci al database, estrarre un record a caso e mostrarlo a video. In più effettueremo una query di aggiornamento sul database per aggiornare le impressions, aggiungendo al contatore che le riguarda una unità in funzione del banner estratto a sorte. Ecco il codice PHP:
<?
$sql = "SELECT id, immagine FROM banner ORDER BY RAND()";
$query = mysql_query($sql, $cn);
$rs = mysql_fetch_row($query);
$sql = "UPDATE banner SET impressions = impressions + 1 WHERE id = ";
mysql_query($sql . $rs[0], $cn);
?>
ed ecco il codice HTML per visualizzare il banner: <a href="click.php?id=<?echo $rs[0];?>"><img src="<?echo $rs[1];?>"></a> E' possibile aggiungere il target per aprire il banner in una nuova finestra ed impostare il bordo a zero all'immagine. Erogazione e conteggio dei click Il codice HTML appena proposto punta al file click.php (accodando l'ID del banner estratto) di cui segue il codice:
<?
include("config.php");
$id = $_GET["id"];
if (isset($id) == false || is_numeric($id) == false)
{
header("location: altra_pagina.php");
}
$sql = "SELECT link FROM banner WHERE id = ";
$query = mysql_query($sql . $id, $cn);
if (mysql_num_rows($query) == 0)
{
header("location: altra_pagina.php");
}
$sql = "UPDATE banner SET click = click + 1 WHERE id = ";
mysql_query($sql . $id, $cn);
$rs = mysql_fetch_row($query);
$vai = $rs[0];
mysql_close($cn);
header("location: $vai");
?>
Il funzionamento è semplice: includiamo il file do configurazione, recuperiamo l'ID del banner e ne controlliamo la correttezza e l'esistenza, aggiorniamo il contaclick, recuperiamo il link a cui puntare, chiudiamo la connessione al database ed effettuiamo il redirect alla landing-page del banner. Il file altra_pagina.php e cui il fine in oggetto effettua il redirect è un file fittizio nel quale ci sarà scritto qualcosa del tipo: "Campagna non disponibile" e serve ad avvisare l'utente nel caso in cui l'ID passato al file click.php sia inesistente. Statistiche dei banner Il file di visualizzazione delle statistiche si chiamerà banner.php o statistiche.php o con altro nome: non importa. Il suo scopo è quello di mostrare a video il nome delle campagne, il numero di impressions e di click che ogni singolo banner genera ed il CTR. Segue il codice:
<?
include("config.php");
$query = mysql_query("SELECT * FROM banner ORDER BY id ASC", $cn);
$quanti = mysql_num_rows($query);
for($x=0; $x<$quanti; $x++)
{
$rs = mysql_fetch_row($query);
$commento = $rs[1];
$impressions = $rs[4];
$click = $rs[5];
echo "<p>";
echo "<b>" . $commento . "</b> - ";
echo "Impressions: " . $impressions . " - ";
echo "Click: " . $click . " - ";
echo "CTR: " . round(($click / $impressions) * 100, 2) . "%";
echo "</p>";
}
mysql_close($cn);
?>
Anche in questo caso il funzionamento è semplice: includiamo il file di configurazione, leggiamo i dati dalla tabella banner e li mostriamo a video stampando il nome della campagna, le impressions, i click e calcolando al volo il CTR attraverso la formula: (click / impressions) * 100 ed arrotondando a due cifre decimali il valore percentuale cosi calcolato. Conclusioni e spunti Il nostro AdServer (o AdRotator, che dir si voglia) è pronto per l'uso e perfettmente funzionante, ma può essere migliorato in diversi aspetti. In questo momento non viene gestito il formato del banner: non possiamo far ruotare insieme un 728X90 ed un 120X600, quindi è il caso di aggiungere un campo alla tabella:
in cui scrivere il formato (es. 728X90) e modificare di conseguenza la query che mostrerà a video solo i banner di questo formato: SELECT id, immagine FROM banner WHERE formato = '728X90' ORDER BY RAND() Il codice di visualizzazione sarà poi ripetibile per gli altri formati in altri punti delle pagine. Inoltre è opportuno gestire i banner attivi e non attivi, quindi aggiungendo un campo del tipo:
dove 0 vuol dire non attivo ed 1 attivo. Modificheremo quindi ancora la query: SELECT id, immagine FROM banner WHERE formato = '728X90' AND attivo = 1 ORDER BY RAND() In entrambi i casi il codice SQL va scritto su una sola riga. Inoltre manca il pannello di controllo per inserire, modificare e cancellare i banner, e per renderli attivi o non attivi. Diversamente i dati possono essere gestiti direttamente attraverso phpMyAdmin. Scritto in data 22/09/2008
|
Appunti PHP per categoriaGuida PHP Guida MySQL Tutorial PHP Tutorial MySQL Tips and Tricks Referenze Download Libreria ExtraNovità
Caching delle pagine PHP
Array di stringa con le funzioni explode() e implode()
Criptare il codice PHP
Un AdServer in PHP e MySQL
Hosting Linux su ConsultingWeb.it
Password casuali con PHP
Ottimizzare una tabella MySQL
Contatore grafico in PHP
Pagamento online con PayPal e PHP
Leggere i meta tag con PHP
TagAJAX, Email, LAMP, Login, MS Access, MS Excel, MS Office, MS Word, PDF, phpMyAdmin, Statistiche, Upload, XML Corsi online
Corso PHP
© 2008 Appunti PHP - A cura di Luca Ruggiero - Partita IVA 05564851219 -
Privacy |
Pubblicità |
Contatti
| | |||