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í:

Rotador de Imagenes

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.