Newerton 0 Denunciar post Postado Setembro 13, 2006 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
Newerton 0 Denunciar post Postado Setembro 13, 2006 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! Olha como fica com o modelo que postei! :( Não queria que repetisse! Compartilhar este post Link para o post Compartilhar em outros sites
asanoli 0 Denunciar post Postado Março 14, 2008 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
drhouse 1 Denunciar post Postado Dezembro 28, 2011 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