Um sistema simples de banner rotativo em PHP/MySQL
Ultimamente tenho notado em listas de discussão ou em fóruns sobre PHP, pessoas em busca de sistemas de banner rotativo. Esse artigo disponibiliza o código de um simples sistema de banner rotativo em MySQL. Ele é pequeno e fácil de entender.
Para começar crie uma tabela no MySQL com a seguinte estrutura :
Depois crie um arquivo com as suas configurações no MySQl , chamado config.php :
Para inserir seus banner (a url da página alvo, a url da figura e o numero máximo de exibições), crie um arquivo insere.php com o seguinte conteúdo:
Para exibir os seus banners, você primeiro deve criar um arquivo chamado exibe.php com o seguinte conteúdo:
Após ter criado o arquivo exibe.php , crie uma javascript na página onde seus banners vão ser exibidos ,com a seguinte estrutura:
Um pequeno exemplo: Vamos dizer que o exibe.php tem esse caminho em sua página, www.romano.com.br/exibe.php (infelizmente, não existe essa página). Para inserir o javascript no html é só fazer isso:
Para registrar os clicks em seus banners e redirecionar para a página alvo, crie um arquivo chamado conta_click.php com seguinte con
teúdo:
Para encerrar vamos criar um script para administrar seus banners com nome de admin.php. Lá você obterá as seguintes informações: Código do banner, estatísticas de exibições, se o banner está ativo (maxexib maior que 0), data de criação e a opção de remover(ou criar) banners. O código do admin.php é o seguinte:
Rodrigo Romano Moreira
Para começar crie uma tabela no MySQL com a seguinte estrutura :
CREATE TABLE banner ( codigo int(11) NOT NULL auto_increment, url char(255), grafico char(255), exibicoes int(11), clicks int(11), maxexib int(11), data datetime, PRIMARY KEY (codigo) );
Depois crie um arquivo com as suas configurações no MySQl , chamado config.php :
<?php $host = "localhost"; // host do MySQL $user = "root"; // id do usuario do MySQL $pass = ""; // senha do usuario no MySQL $database = "banner"; // database do usuario no MySQl ?>
Para inserir seus banner (a url da página alvo, a url da figura e o numero máximo de exibições), crie um arquivo insere.php com o seguinte conteúdo:
<?php include("config.php"); if (isset($submit)) { $data = date("y:m:d h:i:s"); $conn = mysql_connect($host, $user, $pass); mysql_select_db($database); $insere = "INSERT INTO banner (url, grafico, exibicoes, clicks, maxexib, data) VALUES ('$link', '$imagem', 0, 0, '$max', '$data')"; mysql_query($insere, $conn); mysql_close($conn); ?> <input type="submit" value="Fechar" name="submit" onClick='javascript: self.close();'> <?php } else { ?> <form method="POST" action="insere.php"> <table align="center" border="1" bordercolor="#000000" cellspacing="0" cellpadding="0"> <tr> <td> <table border="0"> <tr> <td colspan="2" bgcolor="#219CDE"> <p align="center">Adicionar novo banner</td> </tr> <tr> <td>Link(Url):</td> <td width="50%"><input type="text" name="link" size="40"></td> </tr> <tr> <td>Imagem(Url):</td> <td width="50%"><input type="text" name="imagem" size="40"></td> </tr> <tr> <td>Número de exibições:</td> <td width="50%"><input type="text" name="max" size="40"></td> </tr> <tr> <td colspan="2"> <p align="center"><input type="submit" value="Enviar" name="submit"></td> </tr> </table> </td> </tr> </table> </form> <?php } ?>
Para exibir os seus banners, você primeiro deve criar um arquivo chamado exibe.php com o seguinte conteúdo:
<?php include("config.php"); $conn = mysql_connect($host, $user, $pass); mysql_select_db($database); // a clasula ORDER by RAND() é responsável pela rotação do banner. // note que maxexib é igual a zero, ele não é exibido $query = "SELECT * FROM banner WHERE maxexib > 0 ORDER by RAND() LIMIT 1"; $consulta = mysql_query($query, $conn); $linha = mysql_fetch_row($consulta); $linha[5] -= 1; $linha[3] += 1; // subtrai menos 1 ao campo maxexib $update = "UPDATE banner SET maxexib=$linha[5] WHERE codigo='$linha[0]'"; mysql_query($update, $conn); // adiciona mais 1 ao campo exibicoes $update2 = "UPDATE banner SET exibicoes=$linha[3] WHERE codigo='$linha[0]'"; mysql_query($update2, $conn); mysql_close($conn); // imprime o banner ,que vai ser usado no javascript echo "document.write(\"<a href=/banner/conta_click.php?id=$linha[0] target=_blank><img border=0 src=$linha[2] width=468 height=60></a> \");"; ?>
Após ter criado o arquivo exibe.php , crie uma javascript na página onde seus banners vão ser exibidos ,com a seguinte estrutura:
<SCRIPT LANGUAGE="JavaScript" SRC="http://www.suapagina.com/exibe.php"></SCRIPT>
Um pequeno exemplo: Vamos dizer que o exibe.php tem esse caminho em sua página, www.romano.com.br/exibe.php (infelizmente, não existe essa página). Para inserir o javascript no html é só fazer isso:
<html> <head> <title>Teste do banner</title> </head> <body> <p>Esse é seu banner </p> <SCRIPT LANGUAGE="JavaScript" SRC="http://www.romano.com.br/exibe.php"></SCRIPT> </body> </html>
Para registrar os clicks em seus banners e redirecionar para a página alvo, crie um arquivo chamado conta_click.php com seguinte con
teúdo:
<?php include("config.php"); $conn = mysql_connect($host, $user, $pass); mysql_select_db($database); $query = "SELECT * FROM banner WHERE codigo=$id LIMIT 1"; $consulta = mysql_query($query, $conn); $linha = mysql_fetch_row($consulta); $linha[4] += 1; // adiciona mais 1 ao campo clicks $update = "UPDATE banner SET clicks=$linha[4] WHERE codigo='$linha[0]'"; mysql_query($update, $conn); mysql_close($conn); // redireciona para página alvo do banner header("Location: $linha[1]"); ?>
Para encerrar vamos criar um script para administrar seus banners com nome de admin.php. Lá você obterá as seguintes informações: Código do banner, estatísticas de exibições, se o banner está ativo (maxexib maior que 0), data de criação e a opção de remover(ou criar) banners. O código do admin.php é o seguinte:
<input type="submit" value="Inserir novo Banner" name="submit" onClick='javascript: window.open("insere.php","","width=450,heigth=100,toolbar=no");'> <?php include("config.php"); $conn = mysql_connect($host, $user, $pass); mysql_select_db($database); if (isset($submit)) { $delete = "DELETE FROM banner WHERE codigo = $id"; mysql_query($delete, $conn); } $query = "SELECT * FROM banner ORDER by codigo ASC"; $consulta = mysql_query($query, $conn); while ($linha = mysql_fetch_row($consulta)) { ?> <p> </p> <table border="1" bordercolor="#000000" cellspacing="0" cellpadding="0"> <tr> <td width="100%"> <p align="left">Código : <?php echo $linha[0]; ?> <p>Link : <a href="<?php echo $linha[1]; ?>"><?php echo $linha[1]; ?> </a></p> <p>Imagem :<img border="0" src="<?php echo $linha[2]; ?>" width="468" height="60"></p> <p>Exibições :<?php echo $linha[3]; ?></p> <p>Clicks :<?php echo $linha[4]; ?> </p> <p>Porcentagem(Clicks por exibições) : <?php echo round(($linha[4]/$linha[3])*100,2); ?>%</p> Data de criação :<?php echo $linha[6]; ?> <p>Status :<?php if ($linha[5] != 0) { ?>Ativo<?php } else { ?>Inativo<?php } ?></p> <form method="POST" action="admin.php?id=<?php echo $linha[0]; ?>"> <center> <input type="submit" value="Remover" name="submit"> </center> </form> </td> </tr> </table> <?php } mysql_close($conn); ?>
Rodrigo Romano Moreira
ta aí o código do install funciona :)
<instalar.php>
<?php
/*
<instalar.php>
cria as tabelas no servidor MySQL.
</instalar.php>
*/
include("configi.php");
$instala = @mysql_query("
CREATE TABLE banner (
codigo int(11) NOT NULL auto_increment,
url char(255),
grafico char(255),
exibicoes int(11),
clicks int(11),
maxexib int(11),
data datetime,
PRIMARY KEY (codigo)
)
");
if($instala){ ?><title>SISTEMA DE BANNER - INSTALAÇÃO</title>
<p><font face="Arial"><font size="4">SISTEMA DE BANNERS >> Instalando...</font></font></p>
<p align="left"><font face="Arial" size="2">Criação da tabela... <font color="#008000">SUCESSO!<br>
</font>Agora, <a href="admin.php">clique aqui</a> e entre na administração,
com login e senha setados no config.php.</font></p>
<p align="right"> </p>
<?php
}
else {
$erro = mysql_error();
$erro = str_replace("No Database Selected","001: O banco de dados não foi selecionado.",$erro);
$erro = str_replace("Table 'banners' already exists","002: A tabela já foi criada!",$erro);
?>
<p><font face="Arial"><font face="Arial"><font size="4">SISTEMA DE BANNERS
</font></font><font size="4">>> Instalando...</font></font></p>
<p align="left"><font face="Arial" size="2">Criação da tabela... <font color="#FF0000">FALHA</font><font color="#FF0000">!</font><font color="#008000"><br>
<BR></font>Motivo:<br>
</font><font face="Courier New" size="2"><?=$erro?></font></p>
<p align="right"> </p>
<?php
}
?>
<p align="right"><a href="http://infostrike.org"><font color="#000000" size="1" face="Arial, Helvetica, sans-serif">INSTALAÇÃO
BY IGOR DINIZ</font></a></p>
</instalar.php>
ta ai!!! mas como eu resolvo o problema das exibições tipo eu coloco 10 exibições e enquanto num aparece dez vezes ele num troca rsrs....
<instalar.php>
<?php
/*
<instalar.php>
cria as tabelas no servidor MySQL.
</instalar.php>
*/
include("configi.php");
$instala = @mysql_query("
CREATE TABLE banner (
codigo int(11) NOT NULL auto_increment,
url char(255),
grafico char(255),
exibicoes int(11),
clicks int(11),
maxexib int(11),
data datetime,
PRIMARY KEY (codigo)
)
");
if($instala){ ?><title>SISTEMA DE BANNER - INSTALAÇÃO</title>
<p><font face="Arial"><font size="4">SISTEMA DE BANNERS >> Instalando...</font></font></p>
<p align="left"><font face="Arial" size="2">Criação da tabela... <font color="#008000">SUCESSO!<br>
</font>Agora, <a href="admin.php">clique aqui</a> e entre na administração,
com login e senha setados no config.php.</font></p>
<p align="right"> </p>
<?php
}
else {
$erro = mysql_error();
$erro = str_replace("No Database Selected","001: O banco de dados não foi selecionado.",$erro);
$erro = str_replace("Table 'banners' already exists","002: A tabela já foi criada!",$erro);
?>
<p><font face="Arial"><font face="Arial"><font size="4">SISTEMA DE BANNERS
</font></font><font size="4">>> Instalando...</font></font></p>
<p align="left"><font face="Arial" size="2">Criação da tabela... <font color="#FF0000">FALHA</font><font color="#FF0000">!</font><font color="#008000"><br>
<BR></font>Motivo:<br>
</font><font face="Courier New" size="2"><?=$erro?></font></p>
<p align="right"> </p>
<?php
}
?>
<p align="right"><a href="http://infostrike.org"><font color="#000000" size="1" face="Arial, Helvetica, sans-serif">INSTALAÇÃO
BY IGOR DINIZ</font></a></p>
</instalar.php>
ta ai!!! mas como eu resolvo o problema das exibições tipo eu coloco 10 exibições e enquanto num aparece dez vezes ele num troca rsrs....
10/07/2006 7:48am
(~18 anos atrás)
Estava dando alguns problemas com o redirecionamento onde o erro constava como do "mysql_fetch_row" da pagina conta_click.php... para solucionar basta adicionar a linha:
$id = $_GET[id];
o codigo da página corrigida segue abaixo:
<?php
include("config.php");
$conn = mysql_connect($host, $user, $pass);
mysql_select_db($database);
//pega o id do banner
$id = $_GET[id];
$query = "SELECT * FROM banner WHERE codigo=$id LIMIT 1";
$consulta = mysql_query($query, $conn);
$linha = mysql_fetch_row($consulta);
$linha[4] += 1;
// adiciona mais 1 ao campo clicks
$update = "UPDATE banner SET clicks=$linha[4] WHERE codigo='$linha[0]'";
mysql_query($update, $conn);
mysql_close($conn);
// redireciona para página alvo do banner
echo "<meta http-equiv='refresh' content='0;URL=$linha[1]'>";
?>
$id = $_GET[id];
o codigo da página corrigida segue abaixo:
<?php
include("config.php");
$conn = mysql_connect($host, $user, $pass);
mysql_select_db($database);
//pega o id do banner
$id = $_GET[id];
$query = "SELECT * FROM banner WHERE codigo=$id LIMIT 1";
$consulta = mysql_query($query, $conn);
$linha = mysql_fetch_row($consulta);
$linha[4] += 1;
// adiciona mais 1 ao campo clicks
$update = "UPDATE banner SET clicks=$linha[4] WHERE codigo='$linha[0]'";
mysql_query($update, $conn);
mysql_close($conn);
// redireciona para página alvo do banner
echo "<meta http-equiv='refresh' content='0;URL=$linha[1]'>";
?>
04/01/2006 5:27am
(~19 anos atrás)
Sim Flávio claro !!
Infelismente uma junção de falta de tempo com problemas pessoais ainda não consegui fazer uma nova versão desse Script e colocar aqui pra a galera !!
Na verdade o que eu fiz foi criar um novo campo, "tipo" na hora do cadastro seleciono por uma combo box o tipo do arquivo GIF (que serve pra PNG,JPG,etc...) ou SWF (Flash).
Isso é jogado no banco de dados que na hora da exibição verifica o campo "tipo" e dependendo dele da a saida de dados diferente se imagem normal <img scr blabla> se for flash <object blablabla>.
Bom é isso, abraços ....
Infelismente uma junção de falta de tempo com problemas pessoais ainda não consegui fazer uma nova versão desse Script e colocar aqui pra a galera !!
Na verdade o que eu fiz foi criar um novo campo, "tipo" na hora do cadastro seleciono por uma combo box o tipo do arquivo GIF (que serve pra PNG,JPG,etc...) ou SWF (Flash).
Isso é jogado no banco de dados que na hora da exibição verifica o campo "tipo" e dependendo dele da a saida de dados diferente se imagem normal <img scr blabla> se for flash <object blablabla>.
Bom é isso, abraços ....
18/07/2005 7:51pm
(~19 anos atrás)
Michel, como vc consegui colocar banners em flash? Rola de vc falar o que fez?
Grande abraço.
Flávio Leonardo
Grande abraço.
Flávio Leonardo
12/07/2005 11:36am
(~19 anos atrás)
Ae pessoal...consegui o que queria !! uhehue, com base nesse script, fiz outro com a opção de cadastrar tanto flash quantogif !!
Dps que melhorar ele todo colocoai pro pessoal !!
Abs
Dps que melhorar ele todo colocoai pro pessoal !!
Abs
10/06/2005 12:15am
(~19 anos atrás)
Fala galera beleza ?
Tipo consegui mudando no código resolver alguns problemas que tava acontecendo e meio que personalizando ele da melhor forma pra mim, tipo com relação ao redirecionamento dêem uma olhada se na hora de cadastrar vcs não estão apenas colocando www.nomedosite.com, a forma correta de se colocar é com HTTP, http://www.nomedosite.com.br, foi assim que resolvi o meu problema de redirecionamento, dps colocando fixo o http:// por via de código !!
Outra coisa é o número de visualizações no meu caso isso não seria necessário, então tirei a linha :
$update = "UPDATE banner SET maxexib=$linha[5] WHERE codigo='$linha[0]'";
mysql_query($update, $conn);
Do exibir.php e ficou tudo de boa !!
A única coisa que ta pegando e a não possibilidade de cadastrar banners em flash, pelo menos eu não consegui !!
Se alguém puder ajudar nesse ponto !!
Espero de resto ter ajudado o pessoal ai !!
Abs
Tipo consegui mudando no código resolver alguns problemas que tava acontecendo e meio que personalizando ele da melhor forma pra mim, tipo com relação ao redirecionamento dêem uma olhada se na hora de cadastrar vcs não estão apenas colocando www.nomedosite.com, a forma correta de se colocar é com HTTP, http://www.nomedosite.com.br, foi assim que resolvi o meu problema de redirecionamento, dps colocando fixo o http:// por via de código !!
Outra coisa é o número de visualizações no meu caso isso não seria necessário, então tirei a linha :
$update = "UPDATE banner SET maxexib=$linha[5] WHERE codigo='$linha[0]'";
mysql_query($update, $conn);
Do exibir.php e ficou tudo de boa !!
A única coisa que ta pegando e a não possibilidade de cadastrar banners em flash, pelo menos eu não consegui !!
Se alguém puder ajudar nesse ponto !!
Espero de resto ter ajudado o pessoal ai !!
Abs
09/06/2005 6:41pm
(~19 anos atrás)
Gostei de seu script.. legal... mas poderia ser melhorado como por exemplo: cada banner ter seu máximo de vizualizações e quando esse número for alcançado o banner ser DESATIVADO... =).. depois colocarei um script de banner rotativo aqui
23/05/2005 8:16pm
(~19 anos atrás)
Este script funcionou muito bem comigo.
Agora como faço para usar um arquivo do flash no lugar de uma imagem?
Agora como faço para usar um arquivo do flash no lugar de uma imagem?
25/08/2004 7:48am
(~20 anos atrás)
Gostaria de saber como faço pra rotaciornar os banners em outras dimensoes ??? []s
02/05/2004 2:52am
(~20 anos atrás)
O script acima da um erro e não carrega os banners
Para funcionar coloque um include 'exibe.php'; ou um iframe
<iframe src='http://nome do site.com/banner/exibe.php' scrolling='no' frameborder='0' width=150 height='200' marginheight='0' marginwidth='0'></iframe>
Irá funcionar corretamente.
Está dando um erro no arquivo conta_click.php
basta adicionar '' no id $id = $_GET[id];
ficando assim $id = $_GET['id'];