Ir para conteúdo

POWERED BY:

Arquivado

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

Newerton

[Resolvido] Banner Rotativo Sem Repetir PHP+MySQL

Recommended Posts

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 mysqlinclude "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 urlheader("Location: $url");?>
banner.php

<?php//conecta ao mysqlinclude "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 existeif($imagem==""){echo "<div align = center>Banner não encontrado</div>";}else{//mostra o bannerecho "<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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta isso:

$resultado = mysql_query ("select * from banners WHERE tipo='fullbannerx468x60' order by rand(1) LIMIT 1;");
Não posso colocar rand(1) pq tenho varios banner se eu colocar rand(1) ele nao vai randonamizar!

 

Imagem Postada

 

Olha como fica com o modelo que postei! :(

Não queria que repetisse!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use

"select distinct nome_do_banner from banners WHERE tipo='fullbannerx468x60' order by rand() LIMIT 1;"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estava com está mesma dúvida, não encontrei a solução aqui no forum mais acabei criando segue logo baixo.

 

<?php

// Loop.
$i = 0;
// Numero de registros a ser exibido.
$numRegistros = 6;

/* Query */
$sql2 = mysql_query("SELECT * FROM banners");
// Verifica total de registros na tabela.
$num = mysql_num_rows($sql2);
// Se total de registros na tabela for mair ou igual
// Ao número de registros a ser exibidos utiliza NumRegistros 
// Se não ele atualiza o valor para exibir o total que existe cadastrado. 
$numRegistros = ($num >= $numRegistros) ? $numRegistros : $num;

// Array para salvar os IDS exibidos.
$arrIds = array();

// Verifica se número de registros e maior que 0 para iniciar.
if ($numRegistros > 0) {
   // Inicio do Loop.
   do {

       /* Query */
       $sql2 = mysql_query("SELECT * FROM banners ORDER BY RAND() LIMIT 1");

       while ($row = mysql_fetch_array($sql2)) {

           // Verifica se o registro não foi listado exibe e inserido no array.
           if (!in_array($row['codigo'], $arrIds)) {
               // Incrementa i.
               $i++;
               $arrIds[] = $row['codigo'];

               echo '<img src="'. $row['imagem'] .'" alt="" /><br />';
           }

       } // Fim de WHILE.

       // Continua até I ser menor que número de registros a ser exibido.
   } while ($i < $numRegistros); /** Fim de LOOP */
} // Fim verifica Numero de registros.
?>

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.