Rotador de Banners en PHP
El presente documento guiará paso a paso la construcción de un sistema rotador de banners en PHP y MySQL.
Antes de empezar vamos a definir las características que debe tener nuestro sistema rotador:
- Mostrará un banner aleatorio al cargar una página.
- Mantendrá un récord de impresiones y clics.
- Presentara un texto alternativo para cuando el banner no pueda ser cargado (parámetro "alt" de la etiqueta "img").
Ya definidas las características vamos a desarrollar nuestro sistema. Lo primero que tendríamos que diseñar es la tabla en la base de datos.
Necesitamos almacenar algunos datos como por ejemplo: nombre del banner, url, url de la imagen, cantidad de clics e impresiones. Básicamente nuestra tabla luciría así:

Para mayor facilidad pueden ejecutar este código para crear su tabla en MySQL.
CREATE TABLE banner ( banner_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nombre VARCHAR(20) NULL, url VARCHAR(100) NULL, url_imagen VARCHAR(100) NULL, impresiones INTEGER UNSIGNED NULL DEFAULT 0, clics INTEGER UNSIGNED NULL DEFAULT 0, PRIMARY KEY(banner_id) );
Una vez creada nuestra tabla crearemos el script que se encargará de mostrar los banners de manera aleatoria.
<?php
// Conecta con el servidor mysql
$link = mysql_connect('servidor-bd', 'usuario-bd', 'contraseña-bd');
if(!$link) {
// Si no conecta, muestra un error y termina la ejecucion
die('No se pudo conectar con la base de datos:' . mysql_error());
}
// Selecciona la base de datos que contiene la tabla banner
if(!mysql_select_db('nombre-base-de-datos', $link))
{
// Si no se puede seleccionar muestra error y termina ejecucion
die('Error seleccionando base de datos: ' . mysql_error());
}
// Toma un banner aleatorio de la base de datos
$sql = "SELECT banner_id, nombre, url, url_imagen FROM banner ORDER BY RAND() LIMIT 1";
$res = mysql_query($sql);
list($banner_id, $nombre, $url, $url_imagen) = mysql_fetch_array($res);
// Muestra el banner
echo "<a href=\"banner-clic.php?banner_id=".$banner_id."\">\n";
echo "<img src=\"".$url_imagen."\" width=\"468\" height=\"60\" ";
echo "border=\"0\" alt=\"".$nombre."\"></a>\n";
// Actualiza la cantidad de impresiones del banner
$sql = "UPDATE banner SET impresiones=impresiones+1 WHERE banner_id=".$banner_id." LIMIT 1";
mysql_query($sql);
?>
Ahora creamos un script que se encargará de contar los clics de los banners:
<?php
// Archivo 'banner-clic.php'
// Conecta con el servidor mysql
$link = mysql_connect('servidor-bd', 'usuario-bd', 'contraseña-bd');
if(!$link) {
// Si no conecta, muestra un error y termina la ejecucion
die('No se pudo conectar con la base de datos:' . mysql_error());
}
// Selecciona la base de datos que contiene la tabla banner
if(!mysql_select_db('nombre-base-de-datos', $link))
{
// Si no se puede seleccionar muestra error y termina ejecucion
die('Error seleccionando base de datos: ' . mysql_error());
}
// Revisa si se paso el parametro correcto
if(!isset($_GET['banner_id']) || !eregi('^[0-9]+$', $_GET['banner_id']))
{
die('Ha seguido un enlace incorrecto');
}
$banner_id = $_GET['banner_id'];
$sql = "SELECT url FROM banner WHERE banner_id=" . $banner_id;
$res = mysql_query($sql);
if(mysql_num_rows($res) == 0)
{
// Si el banner no existe muestra el error y termina ejecucion
die('Este banner no existe');
}
else
{
list($url) = mysql_fetch_array($res);
// Actualiza la cantidad de clics
$sql = "UPDATE banner SET clics=clics+1 WHERE banner_id=".$banner_id." LIMIT 1";
mysql_query($sql);
// Redirecciona el navegador
header('Location: ' . $url);
die();
}
?>
Este artículo fue publicado originalmente en raymondjavaxx.com por Ramon Torres.

(5 votos, promedio: 4 de 5)