Um sistema simples de banner rotativo em PHP/MySQL

Canal: PHP  |  Autor: Igor Diniz  |  Publicado em: 17/03/2008  |  Views: 12.204
Bem pessoal como meu tempo está meio apertado, não esta sobrando tempo para fazer artigos, mas tenho vários quase prontos ^^. Então enquanto não termino nenhum artigo irei colocar um artigo que pode ser bastante útil a todos! Do Rodrigo Romano Moreira (www.phpbrasil.com) .


Aprenda a rotacionar seu banner, usando JavaScript, PHP e MySQL. Esse artigo é o ponto de partida para um sistema de banner rotativo nas dimensões 468x60 (no formato GIF ou PNG).
Vote aqui!
Média de Votos Atual: 7.12
Total de Votos: 17
Nota:  
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 :

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 conteú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

Até a próxima!

Tags: php
Creative Commons Esta obra está licenciada sob uma Licença Creative Commons. Você pode copiar, distribuir, exibir, executar, desde que seja dado crédito ao autor original (Citando nome do autor, data, local e link de onde tirou o texto). Você não pode fazer uso comercial desta obra. Você não pode criar obras derivadas.
Vote no artigo:
NR. DE VOTO(S): [3]

Compartilhe:

[x] Fechar Preencha os campos abaixo para indicar esta página:
Seu nome:
Seu e-mail:
Nome do indicado:
E-mail do indicado:
Deixe uma mensagem:
Anti-spam:

(nova imagem)
Preencha o que vê:
Twitter diHITT Facebook delicious envie por e-mail comentar

comentarComentários:

Preencha o formulário para comentar:

[x] Fechar
Nome:*
E-mail:* (não será exibido)
Site: (http://)
Comentário:*
Anti-spam:

(nova imagem)
Preencha o que vê:

Deseja receber as respostas dos comentários

Diego Darlan
Publicado em:
18/03/2008 - 07:53
Opa de mais... muito interçante vlw...
Newton Araujo
Publicado em:
08/05/2008 - 15:16
mUITO BOM MESMO
VALEU!!!
Gabriel
Publicado em:
31/05/2008 - 13:10
Post Muito Bom Mesmo Parabens!! Continue assim!!
Sidney
Publicado em:
26/08/2009 - 02:19
Já fiz tudo como acima manda porem aparce esse erro
Parse error: parse error, expecting `','' or `';'' in C:\wamp\www\original\banner_rotativo\exibe.php on line 36
Poderia me dar uma ajuda.;
Lucas
Publicado em:
06/11/2009 - 19:45
Lucas
Nao vai eu dou Enviar nao funciona...