Un espacio para los entusiastas del web

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

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.

Otros artículos relacionados

Califica esta nota:

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (5 votos, promedio: 4 de 5)
Loading ... Loading ...
21 comentarios en total.

Comentarios

  1. danny

    muy claro!!! hasta yo que soy novato he aprendido acerca de php, muy interesante


  2. Rudy

    Esta muy bueno este editorial ya q con los ejemplos qda claro, se aprende ha hacer una conexion a mysql y a mostrar lops banners aleatoriamente.. en fin muy bn explicado qdo clarisimo el concepto.


  3. Trulala

    Excelete. Está todo muy facil de entender.
    Además gracias por tomartese la molestia de explicar que hacen en cada línea.
    Felicitaciones


  4. Julio Osorio

    Esta muy bueno este editorial ya q con los ejemplos qda claro, se aprende ha hacer una conexion a mysql y a mostrar lops banners aleatoriamente.. en fin muy bn explicado qdo clarisimo el concepto.


  5. picasoft

    Muy beuno este material, pero tengo una pregunta, alguien pudiera explicar como seria, para hacer los banner rotatorio en vez de aleatorios?
    Muchas gracias y repito muy bueno el material


  6. picasoft

    Muy beuno este material, pero tengo una pregunta, alguien pudiera explicar como seria, para hacer los banner rotatorio en vez de aleatorios?
    Muchas gracias y repito muy bueno el material


  7. NAchin

    Muy buen tutorial te felicito, mas claro ya no se puede, gracias


  8. Lief

    esta super este rotador, de seguro que lo pongo en practica.
    gracias


  9. Luis

    exelente la claridad de concepto me fue de mucha ayuda


  10. luilliperrone

    MUY BUENO!, Soy novato y tengo una duda(disculpen mi ignoracia) pero,los codigos que muesta, ¿deben de ir dentro de cada pagina que contenga mi sito???? si alguien me puede contestar esto se lo agrdecere de una manera novata pero infinita.


  11. Omar G

    Excelente ejemplo,,,pero una pregunta existira alguna forma de hacer que sea automatico la rotacion sin actualizar?…gracias estupendo ejemplo


  12. Indira

    Existe alguna forma para insertar tambien, .swf?




  13. Alvaro

    Alguen sabe para ke no sea random si no ke en orden


  14. Excelente pero tengo un problemilla: No me deja visualizar los banners, a menos que separe el script para mostrar. Ejemplo:

    En la versión que plantean aqui esta linea queda asi:
    // Muestra el banner
    echo “n”;
    echo “
    n”;

    Pero yo lo tuve que poner asi:

    echo ‘


  15. Excelente pero tengo un problemilla: No me deja visualizar los banners, a menos que separe el script para mostrar. En la versión que plantean aqui esta linea queda asi:
    echo “n”;

    Pero yo lo tuve que poner asi:
    echo ‘


  16. Carlos

    como se puede hacer para que muestre los banners de manera aleatoria y no cada ves que actualice la pagina


  17. Nahu

    Parse error: parse error, unexpected ‘[’ in C:\AppServ\www\argenstrike\banner-clic.php on line 22

    me da ese error al darle click al banner


  18. leo

    Como hago para indicar la imagen, el id y la url?, gracias


  19. para indicar la imagen y url y eso, es en la base de datos

    para que no sea aleatorio tendrias que cambiar la linea donde aparece ORDER BY RAND() y ordenarlos de la manera diferente


Deja tu Comentario

Maestros del Web se reserva el derecho de moderación de los comentarios. Evita utilizar palabras soeces, ataques directos, descalificativos, insultos, de lo contrario tu comentario será eliminado.


Sobre el Autor

Ramon Torres
Desarrollador web y programador independiente. Especializado en los lenguajes php y C++.

Más artículos de Ramon Torres
Escrito el:
12.09.2006

Archivado en:

Lecturas:
10,963

Anuncios por Q

Las Notas en tu correo


Acerca de

Maestros del Web nace cuando intentamos traducir Webmaster al Español. Nacimos orientados al diseño y desarrollo web. Hoy somos un espacio de apoyo para los entusiastas que participan en proyectos en la red.
Leer más de Maestros del Web