PHP
Você está aqui: Home » PHP » Sistema de Banner Rotativo
Sistema de Banner Rotativo

Introdução
Quando resolvi lançar uma versão mais robusta do Viva o Linux, umas das primeiras coisas em que pensei foi num sistema de banners rotativos. Uma vez lançado o site, acreditava que em pouco tempo já teriam se firmado algumas parcerias para troca ou venda de banners e para não me limitar a apenas um banner fixo nas páginas, um esquema de rotatividade seria necessário.
Sendo assim, segui a seguinte lógica de raciocínio: se tenho dois banners e um acabou de ser exibido, a próxima pageview do site deve mostrar o segundo banner. Eventualmente o parceiro/cliente pode querer estatísticas, então tenho que saber quantas vezes o banner foi exibido e quantas vezes foi clicado.
Ao analisar o estudo de caso decidi que o melhor esquema para a solução seria a utilização de programas PHP armazenando dados sobre o banner em tabelas do MySQL. Nas próximas páginas vamos descobrir como o sistema funciona na prática.Criando a tabela banner no MySQL
Após análise, eis a lista do que achei que seria necessário armazenar em banco de dados:
Logo podemos chegar à seguinte estrutura para nossa tabela, batizada de banner:
- Imagem do banner
- URL do site
- Número de pageviews (exibições)
- Número de cliques (visitas)
- Texto alternativo (propriedade alt da tag img)
- Se o banner está habilitado ou não
+--------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------+------+-----+---------+----------------+
| codigo | int(11) | | PRI | NULL | auto_increment |
| url | varchar(80) | | | | |
| foto | varchar(50) | | | | |
| hits | int(11) | YES | | 0 | |
| clicks | int(11) | YES | | 0 | |
| alt | varchar(80) | YES | | NULL | |
| ativo | enum('0','1') | YES | | 0 | |
+--------+---------------+------+-----+---------+----------------+E a seguir o código SQL usado para criá-la no MySQL:
CREATE TABLE banner (
codigo int(11) NOT NULL auto_increment,
url varchar(80) NOT NULL default '',
foto varchar(50) NOT NULL default '',
hits int(11) default '0',
clicks int(11) default '0',
alt varchar(80) default NULL,
ativo enum('0','1') default '0',
PRIMARY KEY (codigo)
) TYPE=MyISAMExecute a cláusula acima no prompt do seu MySQL e zé fini, vamos à implementação do sistema. :)
Cadastrando um banner no sistema
O processo de cadastramento de banner no sistema exige dois passos.
- Cópia da imagem do banner para o diretório de imagens
- Inserção do registro do banner no MySQL
Cópia da imagem do banner para o diretório de imagens
Supondo que o diretório que escolhi para ser meu repositório de banners chama-se ./imagens/banners/ e meu primeiro banner possui uma imagem chamada banner01.gif, basta copiar a imagem sugerida para o diretório escolhido.
Inserção do registro do banner no MySQL
Uma vez que sabemos o nome da imagem do banner, podemos inserir um registro usando a seguinte cláusula SQL:INSERT INTO banner (url, foto, alt, ativo) VALUES ('http://www.agatetepe.com.br', 'banner01.gif', 'O seu site de tutoriais', '1')
A linha acima vai cadastrar um banner para o site www.agatetepe.com.br, divulgado pela imagem banner01.gif, com o texto "O seu site de tutoriais" e ativo (1). O número de hits e de clicks são inicializados por padrão com o valor 0 (zero).Exibindo o banner e contabilizando os pageviews
Agora que já alimentamos nosso banco de dados com os banners, vamos adicionar código PHP para buscar os dados e exibi-los no browser do usuário.
Neste exemplo vamos criar uma página index.php com apenas o banner como conteúdo. Quando você for usar este código, pode adicionar o resto do conteúdo da página misturado com o código a seguir naturalmente.<? /*
Estou partindo do princípio que você possui uma variável $con que é um
link identificador com sua conexão com o banco de dados, retornada pela
função mysql_connect(). */
// capturar banner
$query = "SELECT codigo, foto, alt, hits FROM banner
WHERE ativo='1'
ORDER BY hits LIMIT 1";
list ($banner_codigo, $banner_foto, $banner_alt, $banner_hits) = mysql_fetch_array(mysql_query($query,$con));
$banner_hits++;
// atualizar hits do banner
$update = "UPDATE banner SET hits=$banner_hits WHERE codigo=$banner_codigo";
mysql_query($update,$con);
echo "<a href='verBanner.php?codigo=$banner_codigo' alt='$banner_alt'><img src='./imagens/banners/$banner_foto' border=0></a>";
?>Notaram o detalhe do código acima ? O link para o banner aponta para um segundo script, o verBanner.php, que será o responsável pela contabilização do número de cliques no banner e em seguida pelo redirecionamento para a página em questão. Lembre-se que a variável hits corresponde ao número de pageviews do banner e não ao número de vezes que ele foi clicado.
Contabilizando o número de cliques e redirecionando para a URL
Por fim, o programa verBanner.php, que recebe como parâmetro o código do banner na tabela do MySQL, contabiliza o clique e redireciona o browser para a URL relacionada.
/*
Estou partindo do princípio que você possui uma variável $con que é um
link identificador com sua conexão com o banco de dados, retornada pela
função mysql_connect(). */
// recebe codigo do banner
$query = "SELECT clicks, url FROM banner WHERE codigo=$codigo";
list ($clicks, $url) = mysql_fetch_array(mysql_query($query,$con));
$clicks++;
$update = "UPDATE banner SET clicks=$clicks WHERE codigo=$codigo";
mysql_query($update,$con);
header("Location: $url"); // redirecionar p/ url Ficou claro pessoal ? Espero que esse artigo possa vir a ser útil à alguém. Vou ficando por aqui, have fun !!!
Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br
Outros artigos postados por este autor
- Artigo Arrays II
- Sistema de Banner Rotativo
- Livro de Visitas
- Códigos básicos
- CSS para tabelas e listas de seleção HTML
- Extensões para o navegador Firefox
Artigos relacionados sobre PHP
- Enviar e-mails pelo PHP usando o PHPMailer
- Criptografia no PHP usando Sha512, Whirlpool e Salsa20
- Sistema: Recomende este Site para seus amigos
- Screenshots com PHP
- Instalando o Apache + PHP + MySQL
- Criando gráficos com a classe JPGraph (parte 1)
Parceiros
BR-Linux.org
Criar WEB
Regularização de Imoveis SP
Montagens de Sites
Templates de Sites
Desenvolvedor de Sites
Elaboração de Sites
Produção de Sites
Programador de Sites
Criadores de Sites
Artigos mais acessados
Desenho de Letras - Construindo fontes TTF
Criando um sistema de login
Enviando email em formato HTML em PHP
Menu Circular em 3D
Cargos e salários na área de informática
Como fazer e modificar calendários
Action Script 2.0 ( Primeira Parte )
10 dicas de Webdesign para salvar seu site
Fireworks VS Photoshop
Serviços
Desenvolvimento de Sites e Sistemas WEB
Otimização de Sites (SEO)
Loja Virtual com Sistema Pagseguro
Sistema de Compra Coletiva
Catálogo de Produtos
Parcerias e Soluções de Publicidade
Portifólio Grupo SOS Designers
Fale Conosco







