Ir para conteúdo

POWERED BY:

Arquivado

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

pensar

Baner aleatorio

Recommended Posts

Galera é o seguinte tenho um sistema de baner randomico e esta normal......Mas o que acontece que tem 15 baners cadastrados e tem vez que ele aparece 3 vezes o mesmo baner quando a pagina da um refresh .. tem como ele alternar e mostrar todos os cadastrados e somente depois de alternar todos ele volta ao inicio? segue abaixo o script da listagem dos baner...

<?phpinclude("adm/config.php");$data = date("Y-m-d");$sql = mysql_query("SELECT * FROM $tabela_banner WHERE banner_mostrar = 'sim' AND banner_data_inicio <= '$data' AND banner_data_final >= '$data' ORDER BY RAND() LIMIT 1");$aux = mysql_fetch_array($sql);$nome = $aux["banner_nome"];$tipo = $aux["banner_tipo"];$link = $aux["banner_link"];if ($tipo == "flash") {echo "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0' width='120' height='60'>";echo " <param name='movie' value='$caminho_site/$nome'>";echo " <param name='quality' value='high'>";echo " <embed src='$caminho_site/$nome' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width='120' height='60'></embed>";echo "</object>";} else {if ($link == "") {echo "<img src='$caminho_site/$nome' border='0'>";} else {echo "<a href='$link' target=_blank><img src='$caminho_site/$nome' border='0'></a>";}}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

No total serao 30 cadastrados...È possivel ele listar sem repetir ate o ultimo cadastrado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim se você usar outro esquema, tipo indo por ordem que ta gravado no banco

ou montando outro esquema onde ele salva num temp o id de qual ja foi e nao mostra depois que acabou zera e começa de novo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim Fabyo ..Teria como você me dar um exemplo pra mim ... no caso de ordenar por odem do banco ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já fiz algo parecido, para receitas que eu queria que aparecessem apenas 1 vez até todas serem exibidas, sem repetir;

 

Como você pode fazer:

adiciona a tabela de banners um campo chamado 'exibido' do tipo tinyint.

 

Ai quando você for fazer teu sql, faz assim:

$sql = 'select * from banners where exibido = 0 order by rand() limit 1';
ai você pega o id deste resultado e faz isso:

$sql = 'update banners set exibido = 1 where id = ' . $id;
ai quando você executar o primeiro sql, e retornar 0 registros, significa que todos já foram exibidos, então você precisa re-comecar o loop, definindo o campo exibido para 0.

$sql = 'update banners set exibido = 0';
Ai começa tudo denovo......

 

Espero q tenha entendido...abçs;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu usei a dica do fabio mas ele nao randomizou...Vou ver agora a sua dica Apokalipse

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu usei a dica do fabio mas ele nao randomizou...Vou ver agora a sua dica Apokalipse

Do jeito q eu passei, além de ser randômico, ele nunca vai repetir o registro, pois a cada exibição ele 'desabilita' o banner, e quanto todos forem exibidos, ele re-habilita todos.Se tu não manjar de fazer usando oop, crie funções que fazem essa execução, ai fica mais facil.Exemplo
$id = ProximoBanner(); // pega o proximo id, e atualiza o 'exibido' para 1ReiniciaLoop(); // define todos os registros para 'exibido' = 0// e assim por diante, facilita a programação, e já é um 'inicio' para o oop.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apokalipse criei o campo exibido como você falou ..Tem como dar uma clareada mais nessas funções com o Sql tipo onde eu colocaria elas no script...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria mais ou menos isso ... eu criei a pagina funcoes.php

 

AGora como implementaria ela melhor no script de visualização??

 

funcoes.php

 

<?php

include("adm/config.php");

 

//

function ProximoBaner() {

$sql = 'update $tabela_banner set exibido = 1 where id = ' . $id;

}

function ReiniciaLoop() {

$sql = 'update $tabela_banner set exibido = 0';

}

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

To te dando o bagulho mastigadinho hein..eheh

 

Não testei pra ver se ta funcionando, mas é basicamente isso...agora se vira rapaz... ;)

 

function AtualizaBanner($id) // atualiza o banner{   $sql = 'UPDATE ' . $GLOBALS['tabela_banner'] . ' SET exibido = 1 WHERE id = ' . $id;   mysql_query($sql) or die(mysql_error());}function ReiniciaLoop() // define exibido = o para todos os itens{   $sql = 'UPDATE ' . $GLOBALS['tabela_banner'] . ' SET exibido = 0';   mysql_query($sql) or die(mysql_error());}function PegaDadosBanner() // retorna dados do banner{   $sql = 'SELECT * FROM ' . $GLOBALS['tabela_banner'] . ' WHERE exibido = 0 ORDER BY RAND() LIMIT 1';   $query = mysql_query($sql) or die(mysql_error());   if (!mysql_num_rows($query))   {	   ReiniciaLoop();	   $sql = 'SELECT * FROM ' . $GLOBALS['tabela_banner'] . ' WHERE exibido = 0 ORDER BY RAND() LIMIT 1';	   $query = mysql_query($sql) or die(mysql_error());   }   $resultado = mysql_fetch_array($query);   AtualizaBanner($resultado['id']);   return $resultado;}// uso$DadosBanner = PegaDadosBanner(); // joga para $DadosBanner os valores do BD sobre o banner atual.

É soh adaptar agora.

 

 

abçs;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apokalipse eu testei aqui o codigo com as funções e verifiquei no banco esta funcionando conforme você disse.

 

 

Agora estou com a dificuldade de implementar ele no script para visualizar....

 

Alguem ai pode me ajudar ...Segue os scripts abaixo

 

 

 

function AtualizaBanner($id) // atualiza o banner[code]{   $sql = 'UPDATE ' . $GLOBALS['tabela_banner'] . ' SET exibido = 1 WHERE id = ' . $id;   mysql_query($sql) or die(mysql_error());}function ReiniciaLoop() // define exibido = o para todos os itens{   $sql = 'UPDATE ' . $GLOBALS['tabela_banner'] . ' SET exibido = 0';   mysql_query($sql) or die(mysql_error());}function PegaDadosBanner() // retorna dados do banner{   $sql = 'SELECT * FROM ' . $GLOBALS['tabela_banner'] . ' WHERE exibido = 0 ORDER BY RAND() LIMIT 1';   $query = mysql_query($sql) or die(mysql_error());   if (!mysql_num_rows($query))   {	   ReiniciaLoop();	   $sql = 'SELECT * FROM ' . $GLOBALS['tabela_banner'] . ' WHERE exibido = 0 ORDER BY RAND() LIMIT 1';	   $query = mysql_query($sql) or die(mysql_error());   }   $resultado = mysql_fetch_array($query);   AtualizaBanner($resultado['id']);   return $resultado;}// uso$DadosBanner = PegaDadosBanner(); // joga para $DadosBanner os valores do BD sobre o banner atual.

Script de visualização

 

<?phpinclude("adm/config.php");$data = date("Y-m-d");$sql = mysql_query("SELECT * FROM $tabela_banner WHERE banner_mostrar = 'sim' AND banner_data_inicio <= '$data' AND banner_data_final >= '$data' ORDER BY RAND() LIMIT 1");$aux = mysql_fetch_array($sql);$nome = $aux["banner_nome"];$tipo = $aux["banner_tipo"];$link = $aux["banner_link"];if ($tipo == "flash") {echo "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0' width='120' height='60'>";echo " <param name='movie' value='$caminho_site/$nome'>";echo " <param name='quality' value='high'>";echo " <embed src='$caminho_site/$nome' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width='120' height='60'></embed>";echo "</object>";} else {if ($link == "") {echo "<img src='$caminho_site/$nome' border='0'>";} else {echo "<a href='$link' target=_blank><img src='$caminho_site/$nome' border='0'></a>";}}?>

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.