Fabio Jp 0 Denunciar post Postado Maio 24, 2011 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
César Boulevar 0 Denunciar post Postado Maio 24, 2011 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
Kakashi_Hatake 267 Denunciar post Postado Maio 24, 2011 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
Fabio Jp 0 Denunciar post Postado Junho 1, 2011 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
Liniquer 0 Denunciar post Postado Junho 3, 2011 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
Fabio Jp 0 Denunciar post Postado Junho 4, 2011 É, eu também já tentei while mas não consegui. Estacionei ai rsrs.. :( Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Junho 5, 2011 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
Fabio Jp 0 Denunciar post Postado Junho 7, 2011 Carlos Coelho muito obrigado. Funcionou perfeitamente :D Compartilhar este post Link para o post Compartilhar em outros sites
Fabio Jp 0 Denunciar post Postado Junho 7, 2011 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