Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fabio Jp

[Resolvido] Banner rotativo diferenciado

Recommended Posts

Olá pessoal,

 

Pesquisei bastante sobre sistema de banner rotativo, mas não encontro um que me atenda em tudo que necessito.

 

Tenho 3 banners na mesma página, um abaixo do outro, onde 1 tem uma medida e os outros dois tem outra:

1 com 136×51 pixels

1 com 136×307 pixels

1 com 136×307 pixels

 

Gostaria que o banner menor, que só aparece 1 por página, alternasse entre uns 5 que vou ter na mesma medida.

Os outros 2 banners, que são um pouco maior, mas de tamanho igual entre eles (136×307 pixels), eu gostaria que não aparecessem dois repetidos, e sim alternando entre os que estão cadastrados no banco de dados.

 

Peguei um post com a dúvida parecida com a minha, mas que não foi resolvida, então vou dar quote no post da pessoa (Newerton).

 

Olá a todos,

 

To aprendendo PHP, e estou gostando muito, mas quando chega nos niveis avançado eu travo ali, vou pro google pesquiso, venho aqui no forum, e em outros forum e não acho a solução, mas eu sei que tem algum jeito de arrumar isso, vou postar os arquivos e no final do post, eu posto a minha duvida, espero ajuda de vocês, como sempre me ajudando!

 

tabela.sql

CREATE TABLE `banners` (
 `id` int(4) NOT NULL auto_increment,
 `nome` varchar(255) NOT NULL default '',
 `imagem` varchar(255) NOT NULL default '',
 `tipo` varchar(255) NOT NULL default '',
 `url` varchar(255) NOT NULL default '',
 `clicks` varchar(4) NOT NULL default '',
 `views` varchar(4) NOT NULL default '',
 PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT AUTO_INCREMENT=1;

 

 

conexao.php

<?php
//dados do mysql
$host = "localhost";
$user = "root";
$pass = "root";
$base = "banners";
//conecta ao mysql(não modifique nada)
$conexao = mysql_connect("$host", "$user", "$pass") or die ('A sua senha, ou usuario ou host mysql é invalido, veja o erro : ' . mysql_error());
mysql_select_db("$base") or die ('O banco de dados não existe!');
?>

 

 

ver_url.php

<?php
//conecta ao mysql
include "conexao.php";
//pega os dados da url
$id = $_GET["id"];
//seleciona tabela
$resultado = mysql_query ("SELECT * FROM banners WHERE id = $id");
//query ao sql
$arr = mysql_fetch_array($resultado);
//transforma tudo em váriaveis
$id       = $arr['id'];
$nome   = $arr['nome'];
$imagem  = $arr['imagem'];
$tipo   = $arr['tipo'];
$url     = $arr['url'];
$clicks  = $arr['clicks'];
$views   = $arr['views'];
//adiciona click
$click = $clicks + 1;
$sql = "UPDATE banners SET clicks = $click WHERE id = $id";
mysql_query($sql);
//manda para a url
header("Location: $url");
?>

 

 

banner.php

<?php
//conecta ao mysql
include "conexao.php";
//seleciona tabela no mysql
$resultado = mysql_query ("select * from banners WHERE tipo='fullbannerx468x60' order by rand() LIMIT 1;");
$total = mysql_num_rows($resultado); 

// Pegando um número aleatório entre 1 e $total; 
$numero = rand(1,$total); 

// Selecionando o registro $numero 
$q = "select * from banners WHERE tipo='fullbannerx468x60' order by ID ASC limit ".$numero.",1"; 
$query = mysql_query($q); 

//query ao mysql
$arr = mysql_fetch_array($resultado);
//transforma tudo em váriaveis

$id       = $arr['id'];
$nome   = $arr['nome'];
$imagem  = $arr['imagem'];
$tipo   = $arr['tipo'];
$url     = $arr['url'];
$clicks  = $arr['clicks'];
$views   = $arr['views'];
//vê se o banner existe
if($imagem=="")
{
echo "<div align = center>Banner não encontrado</div>";
}
else
{
//mostra o banner
echo "<br>";
echo "<a href = \"ver_url.php?id=$id\" title=\"Anunciante: $nome\" target=\"_blank\"><img src=\"up/banners/$tipo/$imagem\" width=468 height=60 border = \"0\"></a>";
//adiciona mais um view
$adiciona = $views + 1;
//atualiza e adiciona
$sql = "UPDATE banners SET views = '$adiciona' WHERE id = $id";
mysql_query($sql);
}?>

 

 

Esta funcionando perfeito, esse banner fica no topo e so mostra "WHERE tipo='fullbannerx468x60'", ate ae tudo bem.

 

Fiz 3 half banner um embaixo do outro, ele mostra de boa os "WHERE tipo='halfbannerx230x60'", só que sempre aparece banner repetido na mesma página por exemplo:

 

BANNER1

BANNER2

BANNER3

Após um reload aparece:

BANNER2

BANNER2

BANNER3

E assim sucessivamente.

 

Tem alguma forma deles não se repetirem na mesma página?

BANNER1

BANNER2

BANNER3

Reload:

BANNER2

BANNER1

BANNER3

E assim sucessivamente.

 

Agradeço a atenção de todos que puder me ajudar.

 

 

Não estou conseguindo resolver o problema.

Também não consigo fazer aparecer os banners da forma que preciso, 1 pequeno e 2 um pouco maior, um abaixo do outro.

 

 

Se alguem puder me ajudar eu agradeço.

Vlw.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Gostaria que o banner menor, que só aparece 1 por página, alternasse entre uns 5 que vou ter na mesma medida.

Os outros 2 banners, que são um pouco maior, mas de tamanho igual entre eles (136×307 pixels), eu gostaria que não aparecessem dois repetidos, e sim alternando entre os que estão cadastrados no banco de dados.

 

Poderia explicar melhor o que queres?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se entendi bem, você resolve o primeiro com

WHERE tipo LIKE "%136×51%" ORDER BY RAND()

, e o segundo com

WHERE tipo LIKE "%136×307%" ORDER BY RAND()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom,

 

No meu caso, vou ter 2 tamanhos de banner.

Um eu estou preenchendo o tipo com tipo01 (esse é o pequeno), e o outro com tipo02 (esse é o grande).

 

Como o banner pequeno vai aparecer uma vez só, está tudo ok quando uso:

WHERE tipo='tipo01'

Ele não repete pois só aparece 1 dele na página.

 

O problema é com o tipo02, que tem que aparecer 2x na tela, um seguido do outro.

Estou com dois problemas.

1º Não estou conseguindo printar dois na tela. Através daquele código ele aparece uma vez só. Vou ter que usar um While? Alguem saberia me informar?

Sei que esse é um código simples, mas estou com dificuldades.

2º Não entendi o LIKE:

WHERE tipo LIKE "%136×307%" ORDER BY RAND()

Com %136×307% ele identifica quais tem essa medida?

 

Agora que estou usando tipo02, não poderia ser:

WHERE tipo='tipo02'

 

Bom, para testar eu teria que saber como fazer para mostrar 2 na tela, e não um, como está acontecendo usando esse código que postei.

 

 

 

Obrigado.

 

Ta dificil rsrs..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com o mesmo problema cara.

No meu caso as medidas são diferentes, e preciso de 3 banners do mesmo tamanho.

 

:/

 

Pensei que era só modificar essa linha:

$q = "select * from banners WHERE tipo='banner400x60' order by ID ASC limit ".$numero.",1"; 

 

Para:

$q = "select * from banners WHERE tipo='banner400x60' order by ID ASC limit ".$numero.",3"; 

 

Mas mesmo assim não deu certo.

Achei que esse 3 era o número de banners que iria aparecer, mas não está dando certo.

 

Alguem poderia ajudar ai?

Valew!

 

 

 

------------------

 

Tentei também:

 

<?php
//seleciona tabela no mysql WHERE tipo LIKE "%136×51%"
$resultado = mysql_query ("SELECT * FROM banners WHERE tipo='banner400x60' ORDER BY RAND() LIMIT 1;");
$total = mysql_num_rows($resultado); 

// Pegando um número aleatório entre 1 e $total; 
$numero = rand(1,$total); 

// Selecionando o registro $numero 
$q = "SELECT * FROM banners WHERE tipo='banner400x60' ORDER BY ID ASC limit ".$numero.",3"; 
$query = mysql_query($q); 

//query ao mysql
while($arr = mysql_fetch_array($resultado))
{
//transforma tudo em váriaveis
$id     = $arr['id'];
$nome   = $arr['nome'];
$imagem = $arr['imagem'];
$tipo   = $arr['tipo'];
$url    = $arr['url'];
$clicks = $arr['clicks'];
$views  = $arr['views'];

//vê se o banner existe
if($imagem=="")
{
	echo "<div align=\"center\">Banner não encontrado</div>";
}
else
{
	//mostra o banner
	echo "<br>";
	echo "<a href=\"url-pagina.php?id=$id\" title=\"Anunciante: $nome\" target=\"_blank\"><img src=\"images/banners/$tipo/$imagem\" width=\"136\" height=\"307\" border=\"0\"></a>";

	//adiciona mais um view
	$adiciona = $views + 1;

	//atualiza e adiciona
	$sql = "UPDATE banners SET views = '$adiciona' WHERE id = $id";
	mysql_query($sql);
}
}
?>

 

Mas nada de funcionar :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, eu também já tentei while mas não consegui.

Estacionei ai rsrs..

 

 

:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos criar a tabela banners:

CREATE TABLE IF NOT EXISTS `banners` (
 `id` int(4) NOT NULL AUTO_INCREMENT,
 `nome` varchar(20) NOT NULL,
 `imagem` varchar(50) NOT NULL,
 `tamanho` varchar(10) NOT NULL,
 `url` varchar(255) NOT NULL,
 `clicks` varchar(10) NOT NULL DEFAULT '0',
 `views` varchar(10) NOT NULL DEFAULT '0',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

 

Agora inserir alguns registros:

INSERT INTO `banners` (`id`, `nome`, `imagem`, `tamanho`, `url`, `clicks`, `views`) VALUES
(1, 'banner 1', 'imagem 1', '136x51', 'http://www.meusite.com/banners/banner1.jpg', '54', '545'),
(2, 'banner 2', 'imagem 2', '136x51', 'http://www.meusite.com/banners/banner2.jpg', '23', '21'),
(3, 'banner 3', 'imagem 3', '136x307', 'http://www.meusite.com/banners/banner3.jpg', '53', '23'),
(4, 'banner 4', 'imagem 4', '136x307', 'http://www.meusite.com/banners/banner4.jpg', '235', '34'),
(5, 'banner 5', 'imagem 5', '136x307', 'http://www.meusite.com/banners/banner5.jpg', '23', '555');

 

O script:

<?php

$conn = mysql_connect( 'localhost', 'root', '' );
mysql_select_db( 'test', $conn );

$sql = 
"
( SELECT * FROM `banners` WHERE tamanho = '136x51' ORDER BY RAND( ) LIMIT 1 )
UNION
( SELECT * FROM `banners` WHERE tamanho = '136x307' ORDER BY RAND( ) LIMIT 2 )
";
$query = mysql_query( $sql, $conn );

while( $rows = mysql_fetch_assoc( $query ) )
{
$result[ ] = $rows;
}
var_dump( $result );

?>

 

O resultado:

<?php
/*

Um banner 136x51 aleatório e dois banners 136x307 aleatórios

*/
array
 0 => 
   array
     'id' => string '1' (length=1)
     'nome' => string 'banner 1' (length=8)
     'imagem' => string 'imagem 1' (length=8)
     'tamanho' => string '136x51' (length=6)
     'url' => string 'http://www.meusite.com/banners/banner1.jpg' (length=42)
     'clicks' => string '54' (length=2)
     'views' => string '545' (length=3)
 1 => 
   array
     'id' => string '3' (length=1)
     'nome' => string 'banner 3' (length=8)
     'imagem' => string 'imagem 3' (length=8)
     'tamanho' => string '136x307' (length=7)
     'url' => string 'http://www.meusite.com/banners/banner3.jpg' (length=42)
     'clicks' => string '53' (length=2)
     'views' => string '23' (length=2)
 2 => 
   array
     'id' => string '5' (length=1)
     'nome' => string 'banner 5' (length=8)
     'imagem' => string 'imagem 5' (length=8)
     'tamanho' => string '136x307' (length=7)
     'url' => string 'http://www.meusite.com/banners/banner5.jpg' (length=42)
     'clicks' => string '23' (length=2)
     'views' => string '555' (length=3)

 

 

Com base neste exemplo simples, você pode fazer as alterações necessárias a sua necessidade ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá, segue o código pronto e funcionando:

 

Criando o tabela no BD

CREATE TABLE IF NOT EXISTS `banners` (
 `id` int(4) NOT NULL AUTO_INCREMENT,
 `nome` varchar(20) NOT NULL,
 `imagem` varchar(50) NOT NULL,
 `tamanho` varchar(10) NOT NULL,
 `url` varchar(255) NOT NULL,
 `clicks` varchar(10) NOT NULL DEFAULT '0',
 `views` varchar(10) NOT NULL DEFAULT '0',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

 

Inserindo alguns registros de exemplo

INSERT INTO `banners` (`id`, `nome`, `imagem`, `tamanho`, `url`, `clicks`, `views`) VALUES
(1, 'banner 1', 'banner01.jpg', '136x51', 'http://www.banner01.com.br', '54', '545'),
(2, 'banner 2', 'banner02.jpg', '136x51', 'http://www.banner02.com.br', '23', '21'),
(3, 'banner 3', 'banner03.jpg', '136x307', 'http://www.banner03.com.br', '53', '23'),
(4, 'banner 4', 'banner04.jpg', '136x307', 'http://www.banner04.com.br', '235', '34'),
(5, 'banner 5', 'banner05.jpg', '136x307', 'http://www.banner05.com.br', '23', '555');

 

banners.php - Script

<?php
//conecta ao mysql
$conexao = mysql_connect( 'localhost', 'root', '' );
mysql_select_db( 'test', $conexao );

// Selecionando 1 banner 136x51 aleatóriamente, e 2 136x307 aleatóriamente
$sql = "( SELECT * FROM `banners` WHERE tamanho = '136x51' ORDER BY RAND () LIMIT 1 ) UNION ( SELECT * FROM `banners` WHERE tamanho = '136x307' ORDER BY RAND() LIMIT 2 )";
$query = mysql_query( $sql, $conexao );

//query ao mysql
while( $rows = mysql_fetch_assoc( $query ) )
{
//formando váriaveis
$id     = $rows['id'];
$nome   = $rows['nome'];
$imagem = $rows['imagem'];
$tamanho   = $rows['tamanho'];
$url    = $rows['url'];
$clicks = $rows['clicks'];
$views  = $rows['views'];

// formatando largura e altura
if($tamanho == "136x51")
{
	$tamanho_width = "136";
	$tamanho_height = "51";
}
else
{
	$tamanho_width = "136";
	$tamanho_height = "307";
}

//mostra os banners
echo "<p><a href=\"url-pagina.php?id=$id\" title=\"$nome\" target=\"_blank\"><img src=\"http://www.meusite.com/banners/$imagem\" width=\"$tamanho_width\" height=\"$tamanho_height\" border=\"0\" alt=\"$nome\"></a></p>";

//preparando para adiciona mais um view
$adiciona = $views + 1;

//atualiza e adiciona um view
$sql = "UPDATE banners SET views = '$adiciona' WHERE id = $id";
mysql_query($sql);
}
?>

 

url-pagina.php - Página responsável por armazenar 1 click ao $clicks e redirecionar para a $url

<?php
//conecta ao mysql
$conexao = mysql_connect( 'localhost', 'root', '' );
mysql_select_db( 'test', $conexao );


//pega os dados da url
$id = $_GET["id"];

//seleciona tabela
$resultado = mysql_query ("SELECT * FROM banners WHERE id = $id");

//query ao sql
$rows = mysql_fetch_array($resultado);

//transforma tudo em váriaveis
$id      = $rows['id'];
$nome    = $rows['nome'];
$imagem  = $rows['imagem'];
$tamanho = $rows['tamanho'];
$url     = $rows['url'];
$clicks  = $rows['clicks'];
$views   = $rows['views'];

//adiciona click
$click = $clicks + 1;
$sql = "UPDATE banners SET clicks = $click WHERE id = $id";
mysql_query($sql);

//manda para a url
header("Location: $url");
?>

 

Showwwwwwwww !

 

Quem quiser acrescentar algo mais, manda ve..

 

 

Valew galera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.