Peguei um sistema de SlideShow do Dirceu Bimont Ivo - http://my.opera.com/bimonti/ muito bacana, já o utilizo a um bom tempo, porém sempre fazia manualmente as alterações de fotos do slide.
No Site do Dirceu ele disponibilizou uma versão com banco de dados, porém nao estou conseguindo adaptá-la para pegar os dados da tabela da Galeria Brasil 3.
A idéia é que quando eu crio uma nova galeria, o slide mostra as últimas 4.
Bom, vou postar os códigos pra vcs verem o funcionamento:
index.html(Detalhe: eu simplifiquei um pouco o slide, nao exibindo botoes de avançar, etc.)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Manual - SlideShow BD</title> <script type="text/javascript"> function settings(){ var el = document.getElementById('settings'); (el.style.display == 'none') ? el.style.display = 'block' : el.style.display = 'none'; } </script> <script src="slide.php" type="text/javascript"></script> <link href="slide.css" rel="stylesheet" media="screen" type="text/css" /> </head> <body onload="slide.start()"> <div id="manual"> <h3><img src="imgs/book.gif" alt="Manual" /> Manual - SlideShow BD</h3> <!--Slide Start--> <div id="pic"> <a href="" id="linkSlide"> <img id="slideImg" class="img" /> <div id="titleSlide"></div> </a> <div id="textSlide"></div> </div> <!--Slide End--> </div> </body> </html>
slide.php(Original)
<?php /* $BD:Slide - version 0.9.4$ $LastModified: 04/02/2006$ Sistema Free para uso pessoal ou comercial contanto que os créditos permaneçam intactos. Eu já nem estou colocando um monte de coisa pra não deixar o código pesado. ^^ Maiores Informações: http://my.opera.com/bimonti/ */ echo" slide = { // vetor com os slides _imagens : [ "; /* Estrutura da Tabela de Modelo +----+------+--------+-----------+------+ | ID | Path | Título | Descrição | Link | +----+------+--------+-----------+------+ | | | | | | | | | | | | +----+------+--------+-----------+------+ */ $query = 'SELECT * FROM slide'; $link = mysql_connect('localhost', 'root', '') or die('Não foi possível conectar: ' . mysql_error()); mysql_select_db('test') or die('Não foi possível selecionar o banco da dados'); $result = mysql_query($query) or die('A consulta falhou!: ' . mysql_error()); $x=0; while ($l = mysql_fetch_array($result, MYSQL_ASSOC)) { if($x!=0){ echo ","; } echo '["'.$l['path'].'","'.$l['title'].'","'.$l['text'].'","'.$l['link'].'"]'; ++$x; } echo" ], // ID dos elementos que o sistema modifica // ID da imagem do slide _slideImg : 'slideImg', // ID do link do slide, ou seja, um elemento A _linkSlide : 'linkSlide', // ID do título do slide, uma div ou span por exemplo _titleSlide: 'titleSlide', // ID do título do slide, idêntico ao de cima _textSlide : 'textSlide', // ID da imagem de play|pause _playPause : 'playpause', // ID da div que mostra ou esconde as opções de customização de tempo // essa opção pode ser omitida do usuário, basta retirar o botão // settings da página, e como a div já vem com o display:none por // padrão o usuário não terá acesso a essas opções. _showTimer : 'showTimer', // variáveis do sistema // Daqui para baixo não é necessário alterar mais nada, aqui o sistema // cuidará de tudo _count : 0, _length : null, _timeOutID : null, _pause : false, _timer : 4, // função que inicia o slide e seta todas os parâmetros necessários start : function(){ with(this){ _preLoader(); _length = _imagens.length; _work(); } }, // faz o pré-carregamento das imagens _preLoader : function(){ for(x in this._imagens){ var image = new Image(); image.src = this._imagens[x][0]; } }, // função principal que faz as checagens necessárias _work : function(){ with(this){ (_count == _length) ? _count = 0 : (_count < 0) ? _count = _length-1 : void(0); var current = _imagens[_count]; _exchange(current); if(!_pause){ (typeof(_timeOutID) == 'number') ? clearTimeout(_timeOutID) : void(0); _timeOutID = setTimeout( function(){ slide.next(); fade(0,0,$(_slideImg)); }, (Number(_timer)*1000) ); } } }, // função que altera os elementos da página, altere os IDs se necessário _exchange : function(img){ this.$(this._slideImg).src = img[0]; this.$(this._titleSlide).innerHTML = img[1]; this.$(this._textSlide).innerHTML = img[2]; this.$(this._linkSlide).href = img[3]; this.fade(0,100,this.$(this._slideImg)); }, // altera para o próximo slide ao clicar no botão Próximo next : function(){ with(this){ _count++; _work(); } }, // altera para o slide anterior ao clicar no botão correspondente previous : function(){ with(this){ _count--; _work(); } }, // pausa e continua a apresentação pause : function(){ var img = this.$(this._playPause); if(this._pause){ this._pause = false; img.src = 'imgs/pause.gif'; img.title = 'Parar'; } else{ this._pause = true; img.src = 'imgs/play.gif'; img.title = 'Continuar'; } with(this){(typeof(_timeOutID) == 'number') ? clearTimeout(_timeOutID) : void(0); _work();} }, // controla o tempo de troca de cada slide tControl : function(act){ with(this){ (act=='m')?((_timer==4)?void(0):_timer=_timer-1):((_timer==9)?void(0):_timer= _timer +1); this.$(this._showTimer).innerHTML = _timer+'s'; } }, // altera a opacidade do elemento e suaviza a transição entre os slides fade : function (){ var type,signal; var from = arguments[0]; var to = arguments[1]; var el = arguments[2]; (document.all) ? type = 'filter' : type = 'opacity'; (from>to) ? signal = '-' : signal= '+'; if(from >= to/2){ from = eval(from+signal+10); }else{ from = eval(from+signal+5); } if(type=='opacity'){ try{el.style[type] = Number(from*0.01); }catch(e){} }else{ try{el.style[type] = 'alpha(opacity='+from+')'; }catch(e){} } if(from != to){ setTimeout( function(){ slide.fade(from,to,slide.$(slide._slideImg)); } ,50); } }, // retorna o elemento solicitado através de seu ID $ : function(){ return document.getElementById(arguments[0]); } } ";?>
Este cógido abaixo é o que eu uso em meu site para simplesmente exibir os 4 ultimos galerias cadastradas, e estou utilizando como base para mudar o slide.php:(não levem em consideração a tabela.)
<?php include("security/conexao.php"); $query = mysql_query("SELECT * FROM galerias LEFT OUTER JOIN imagens ON img_codigo = gal_codigo_img ORDER BY gal_data DESC LIMIT 4"); // Agora exiba o código com a configuraçao de sua tabela - o cabeçalho dela. ?> <p> <table cellpadding="0" cellspacing="0"> <?php // Agora vamos montar o código. Pegue o valor total de resultados: $total = mysql_num_rows($query); // Defina o número de colunas que voce deseja exibir: $colunas = "1"; // Agora vamos ao "truque": if ($total > 0) { for ($i = 0; $i < $total; $i++) { if (($i % $colunas) == 0) { ?> <tr> <td height="20" colspan="4"> </td> </tr> <tr> <?php } $dados= mysql_fetch_assoc($query); $dados['gal_data'] = date('d/m/Y', strtotime($dados['gal_data'])); $sql = "SELECT * FROM imagens WHERE img_codigo_gal = ". $dados['gal_codigo'] ." ORDER BY RAND()"; $img_query = mysql_query($sql); $cont = mysql_num_rows($img_query); if (!$dados['img_nome_arquivo'] && $cont > 0) { $img = mysql_fetch_assoc($img_query); $dados['img_nome_arquivo'] = $img['img_nome_arquivo']; } ?> <td style="width:100px"> <?php if ($dados['img_nome_arquivo'] != "") { ?> <a href="#ultimas_fotos" onclick="window.open('security/galeria/galeria.php?gal=<?= $dados['gal_codigo']; ?>', 'galeria', 'width=770,height=630,resizable=0,scrollbars=1');"> <img style="margin:0 10px 0 3px; border:1px solid #999;" src="security/galeria/imagem.php?gal=<?= $dados['gal_pasta']; ?>&img=<?= $dados['img_nome_arquivo']?>&thumb=1" border="1" align="left"> </a> <?php } ?> </td> <td style="width:200px;"> <span style="text-transform: uppercase;"> <a href="#ultimas_fotos" onclick="window.open('security/galeria/galeria.php?gal=<?= $dados['gal_codigo']; ?>', 'galeria', 'width=770,height=630,resizable=0,scrollbars=1');" style="color:#F1AF25; font-style:italic; font-weight:bold;"><?= $dados['gal_titulo']?></a> </span> <p style="font-size:11px; text-align:left;"> Data: <strong><?= $dados['gal_data'];?></strong> <br /> Local: <strong><?= $dados['gal_local']?></strong> <br /> <strong><? echo $cont;?></strong> Fotos. </p> </td> <td width="15"></td> <?php } } ?> </tr> </table>
Bom, eu fui alterando e tals, e cheguei nisso aqui abaixo, que até funcionou, apareceram o titulo da galeria, o local da festa, mas a foto nao exibiu e nem os links apontam para o lugar correto, nao achei onde arrumar isso.
<?php include("../security/conexao.php"); $query = mysql_query("SELECT * FROM galerias LEFT OUTER JOIN imagens ON img_codigo = gal_codigo_img ORDER BY gal_data DESC LIMIT 4"); ?> <?php $dados= mysql_fetch_assoc($query); $dados['gal_data'] = date('d/m/Y', strtotime($dados['gal_data'])); $sql = "SELECT * FROM imagens WHERE img_codigo_gal = ". $dados['gal_codigo'] ." ORDER BY RAND()"; $img_query = mysql_query($sql); $cont = mysql_num_rows($img_query); if (!$dados['img_nome_arquivo'] && $cont > 0) { $img = mysql_fetch_assoc($img_query); $dados['img_nome_arquivo'] = $img['img_nome_arquivo']; } ?> <?php echo" slide = { // vetor com os slides _imagens : [ "; while ($l = mysql_fetch_array($query)) { if($x!=0){ echo ","; } echo '["'.$l['img_nome_arquivo'].'","'.$l['gal_titulo'].'","'.$l['gal_local'].'","'.$l['gal_codigo_img'].'"]'; ++$x; } echo" ], // ID dos elementos que o sistema modifica // ID da imagem do slide _slideImg : 'slideImg', // ID do link do slide, ou seja, um elemento A _linkSlide : 'linkSlide', // ID do título do slide, uma div ou span por exemplo _titleSlide: 'titleSlide', // ID do título do slide, idêntico ao de cima _textSlide : 'textSlide', // ID da imagem de play|pause _playPause : 'playpause', // ID da div que mostra ou esconde as opções de customização de tempo // essa opção pode ser omitida do usuário, basta retirar o botão // settings da página, e como a div já vem com o display:none por // padrão o usuário não terá acesso a essas opções. _showTimer : 'showTimer', // variáveis do sistema // Daqui para baixo não é necessário alterar mais nada, aqui o sistema // cuidará de tudo _count : 0, _length : null, _timeOutID : null, _pause : false, _timer : 4, // função que inicia o slide e seta todas os parâmetros necessários start : function(){ with(this){ _preLoader(); _length = _imagens.length; _work(); } }, // faz o pré-carregamento das imagens _preLoader : function(){ for(x in this._imagens){ var image = new Image(); image.src = this._imagens[x][0]; } }, // função principal que faz as checagens necessárias _work : function(){ with(this){ (_count == _length) ? _count = 0 : (_count < 0) ? _count = _length-1 : void(0); var current = _imagens[_count]; _exchange(current); if(!_pause){ (typeof(_timeOutID) == 'number') ? clearTimeout(_timeOutID) : void(0); _timeOutID = setTimeout( function(){ slide.next(); fade(0,0,$(_slideImg)); }, (Number(_timer)*1000) ); } } }, // função que altera os elementos da página, altere os IDs se necessário _exchange : function(img){ this.$(this._slideImg).src = img[0]; this.$(this._titleSlide).innerHTML = img[1]; this.$(this._textSlide).innerHTML = img[2]; this.$(this._linkSlide).href = img[3]; this.fade(0,100,this.$(this._slideImg)); }, // altera para o próximo slide ao clicar no botão Próximo next : function(){ with(this){ _count++; _work(); } }, // altera para o slide anterior ao clicar no botão correspondente previous : function(){ with(this){ _count--; _work(); } }, // pausa e continua a apresentação pause : function(){ var img = this.$(this._playPause); if(this._pause){ this._pause = false; img.src = 'imgs/pause.gif'; img.title = 'Parar'; } else{ this._pause = true; img.src = 'imgs/play.gif'; img.title = 'Continuar'; } with(this){(typeof(_timeOutID) == 'number') ? clearTimeout(_timeOutID) : void(0); _work();} }, // controla o tempo de troca de cada slide tControl : function(act){ with(this){ (act=='m')?((_timer==4)?void(0):_timer=_timer-1):((_timer==9)?void(0):_timer= _timer +1); this.$(this._showTimer).innerHTML = _timer+'s'; } }, // altera a opacidade do elemento e suaviza a transição entre os slides fade : function (){ var type,signal; var from = arguments[0]; var to = arguments[1]; var el = arguments[2]; (document.all) ? type = 'filter' : type = 'opacity'; (from>to) ? signal = '-' : signal= '+'; if(from >= to/2){ from = eval(from+signal+10); }else{ from = eval(from+signal+5); } if(type=='opacity'){ try{el.style[type] = Number(from*0.01); }catch(e){} }else{ try{el.style[type] = 'alpha(opacity='+from+')'; }catch(e){} } if(from != to){ setTimeout( function(){ slide.fade(from,to,slide.$(slide._slideImg)); } ,50); } }, // retorna o elemento solicitado através de seu ID $ : function(){ return document.getElementById(arguments[0]); } } ";?>
Por gentileza, dêem-me uma ajuda ^^ Muito Obrigado!