En esta ocasión voy a demostrarles cómo armar un rotador de banners con estadísticas de clicks e impresiones.
Para poder hacer un buen rotador de banners con sus estadísticas correspondientes necesitariamos tener estadisticas de este banner, cuantas veces se ve, cuantos clicks se le han dado, etc. Es un principio super basico de un google ad, claro si comprobar pero es un inicio.
En este tutorial tomaremos ya en cuenta que sabes lo básico de PHP: conección a BD, agregar y sacar info de la DB
Codigo:
1 2 3 4 5 6 7 8 9
|
<?php
CREATE TABLE tabla (
ban_id int(255) NOT NULL auto_increment,
ban_url varchar(255) NOT NULL ,
ban_img varchar(255) NOT NULL ,
ban_click int(255) NOT NULL default '0',
ban_impre int(255) NOT NULL default '0',
PRIMARY KEY (ban_id)) TYPE=MyISAM;
?>
|
ban_id es índice y se auto incrementa con cada nuevo registro añadido, contiene la id de cada banner.
ban_url es donde almacenaremos las direcciones de los sitios.
ban_img es donde almacenaremos las direcciones de los banners.
ban_click es donde pondremos la cantidad de clicks de cada banner.
ban_impre es donde pondremos la cantidad de impresiones de cada banner.
db.php
Codigo:
1 2 3 4 5 6 7 8 9
|
<?php
$host = "localhost";// dejen este así
$username = "root";// Nombre de usuario de la Base de Datos
$password = ""; // Password de la base de datos
$basedatos = "mctekk"; //Base de datos que vamos a usar
$db = mysql_connect($host, $username, $password);
mysql_select_db($basedatos, $db);
?>
|
» Paso 02 - Banner
Comencemos con lo más fácil, el rotador. Para el rotador usaremos el siguiente código:
banner.php
Codigo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<?php
include("db.php");
$qbaney = mysql_query("SELECT * FROM tabla");
mt_srand(time());
$max = mysql_num_rows($qbaney);
$rand = mt_rand(1,$max);
$sqldo = mysql_query("SELECT * FROM tabla WHERE ban_id='$rand'");
while($ban = mysql_fetch_assoc($sqldo))
{
echo "<a href='click.php?id=".$ban['ban_id']."' target=_blank>".
"<img src='".$ban['ban_img']."' width=468 height=60 border=0></a>";
}
mysql_query("UPDATE tabla SET ban_impre = ban_impre+1 WHERE ban_id = '$rand'");
?>
|
Vamos a traducir el código línea por línea:
1. conexión al motor MySQL...
2. Se selecciona todo de la tabla.
3. Se crea la semilla del rotador (mejorado).
4. Se cuentan todos los banners y se los guarda en $max.
5. Se genera un número aleatorio entre 1 y el máximo ($max).
6. Se selecciona un banner de la tabla donde el campo ban_id sea igual al número aleatorio.
7. Mientras $ban sea un array asociativo...
8. Imprimir en la pantalla un link a click.php?id= id elegido en la tabla.
9. La imagen desde la dirección almacenada en la tabla, cerramos link.
10. Cerramos el while.
11. Actualizamos la tabla con una impresión más de la que ya había.
» Paso 03 - Click
Ese fue el rotador de banners con contador de impresiones. Ahora nos falta el contador de clicks y redireccionador al sitio donde pertenece el banner. Para eso, guardamos el siguiente archivo:
click.php
Codigo:
1 2 3 4 5 6 7 8 9 10 11 12
|
<?php
include("db.php");
mysql_query("UPDATE tabla SET ban_click = ban_click+1 WHERE ban_id='".addslashes($_GET['id'])."' ");
$showurl = mysql_query("SELECT * FROM tabla WHERE ban_id='".addslashes($_GET['id'])."' ");
while($rowed = mysql_fetch_assoc($showurl))
{
header("Location: ".$rowed['ban_url']);
}
?>
|
3. Se actualiza la cantidad de clicks en el banner contenido en $_GET[‘id’].
5. Se muestra la información como un array asociativo
9. La página es redireccionada al sitio del banner.
» Paso 04 - Admin
Para ver sus estadísticas pueden crear una página que muestre los datos de cada campo, eso es muy fácil de hacer, y les doy el ejemplo con el campo de ban_id ;-)
admin.php
Codigo:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
<?php
include("db.php");
$sel = mysql_query("SELECT * FROM tabla");
echo "<table width=100%>";
while($show=mysql_fetch_assoc($sel))
{
echo "<tr>". "<td>".$show['ban_id']."</td>". "</tr>";
}
echo "</table>";
?>
|
Lo que haría es:
7. Seleccionar todo de la tabla
8. Imprimir el tag de la tabla HTML
9. Se muestra la información como un array asociativo
10. Se abre una fila
11. Se imprime la celda con el id
12. Se cierra la fila
13. Se cierra el while
14. Se cierra la tabla HTML
» Paso 05 - Ultimo
NOTA 1: Un error común que todos hacemos es usar mysql_fetch_array() en vez de mysql_fetch_assoc(). Esto nos da un gasto de procesos innecesarios, ya que con array abrimos tanto un índice numeral como el índice asociativo (nombre del campo). Usando assoc directamente, nos ahorra tiempo si solo necesitamos usar los nombres de los campos para nuestras aplicaciones.
NOTA 2: Colocando un @ antes de una función evita (no en todas las funciones) que se muestre un mensaje de error, en caso que algo salga mal. Es por eso que cuando algo salga mal en la conexión al motor MySQL, sólo se mostrará el mensaje que he colocado. Espero que les haya sido tan útil como a mí este pequeño script y que lo disfruten mucho ;-) Cuenten muchos clicks e impresiones!
Descargar