|
||
|
|
Conheça também: Onmasters . Ofertas . Divulgue! . Vai.la . Geraboleto . Baixa.la . Assista.la . Bloghost
» Início » Desenvolvimento » Banco de dados e SQL » Galeria de fotos com Flash, PHP e XML
--> |
|
Avaliação:
![]() ![]() ![]() ![]() | Publicado em: 04/04/2007Galeria de fotos com Flash, PHP e XML
Flavia Jobstraibizer é analista programadora, atuando há 6 anos no desenvolvimento de soluções online. Trabalha com Delphi, PHP, Mysql, PostgreSql, Sql Server, XML, Ajax, etc. Atualmente é Gerente de TI em uma empresa de tecnologia em São Paulo - SP.
Por um tempo procurei material parecido, para atender um cliente. Não achei nada dinâmico, apenas conversas entre flash e xml, estáticas. Como o flash deste artigo, cujo mesmo encontrei na net e mantenho os créditos.
O que fiz então neste artigo, é abordar o uso do xml, utilizando php e banco de dados mysql, para gerar uma galeria de fotos dinâmica em flash. Não vou falar aqui, do visual da sua galeria. Isso quem decide é você. Vou falar sobre o action script que entende, abre e lê o xml, cujo mesmo é gerado pelo php, que realiza as consultas no mysql. Parece complicado? Mas não é! O primeiro passo é obter o arquivo .fla de exemplo. Você pode fazer isso, clicando aqui: Entre as actions de animação ao mostrar a fotografia, layers de nome do site, etc, vamos direto ao ponto principal, a action do XML. No simbolo "tudo", na layer1, você vai encontrar do que vamos tratar agora. // criando o objeto XML var meuXML:XML = new XML(); // ignorando os espaços em branco meuXML.ignoreWhite = true; // carregando o XML meuXML.onLoad = function():Void{ // variável que retorna a altura de todos os thumbs juntos, para calcular a barra de rolagem altura = (thumb._height*meuXML.childNodes[0].childNodes. length+meuXML.childNodes[0].childNodes.length*2); // criando um loop for for(i=0;i<meuXML.childNodes[0].childNodes.length;i++){ // duplicando o movieclip thumb, para cada registro encontrado duplicateMovieClip("thumb","thumb"+i,i+1); thumbs = _root.tudo_mc["thumb"+i]; // posição de cada thumb thumbs._y += (thumb._height+2)*i; // criando uma instância da classe MovieClipLoader var MCL1:MovieClipLoader = new MovieClipLoader(); // carregando um arquivo no objeto MCL1, de acordo com o primeiro nó do XML, o nó filho atual (i) do atributo thumb, movieclip alvo: thumbs.mostra MCL1.loadClip(meuXML.childNodes[0].childNodes[i].attributes. thumb,thumbs.mostra); thumbs.onEnterFrame = function():Void{ // variável que checa o progresso do objeto MCL1 progresso1 = MCL1.getProgress(this.mostra); // texto do campo pct_thumb: bytes carregados / bytes totais * 100 + o sinal de porcentagem this.pct_thumb.text = Math.ceil(progresso1.bytesLoaded / progresso1.bytesTotal * 100) + "%"; // se os bytes carregados forem iguais ao bytes totais, deixa o campo de texto invisível, se não, ele continua visível progresso1.bytesLoaded == progresso1.bytesTotal ? this.pct_thumb._visible = false : this.pct_thumb._visible = true; } // variável de referência, que indica o nó atual thumbs.atual = i; // texto do campo de texto "campo" thumbs.campo.text = i+1; // retirando a mãozinha do mouse thumbs.btn.useHandCursor = false; // quando clicar no movieclip thumbs.btn.onRelease = function():Void{ // outra instância da classe MovieClipLoader var MCL2:MovieClipLoader = new MovieClipLoader(); // carregando o arquivo MCL2.loadClip(meuXML.childNodes[0]. childNodes[this._parent.atual].attributes.grande,_root.mc); // mesma lógica do MCL1 this.onEnterFrame = function():Void{ progresso2 = MCL2.getProgress(_root.mc); _root.pct.text = Math.round(progresso2.bytesLoaded/progresso2.bytesTotal*100) + "%"; progresso2.bytesLoaded == progresso2.bytesTotal ? _root.pct._visible = false : _root.pct._visible = true; } // definindo o texto do campo de texto descrição, de acordo com o nó atual do atributo desc _root.descricao.text = meuXML.childNodes[0].childNodes[this._parent.atual].attributes.desc; } // ao passar o mouse thumbs.btn.onRollOver = function():Void{ // pequena mudança de contraste _root.tudo_mc["thumb"+this._parent.atual].mostra.contrastTo(50,1); } // ao tirar o mouse thumbs.btn.onRollOut = function():Void{ // voltando ao normal _root.tudo_mc["thumb"+this._parent.atual].mostra.contrastTo(100,1); } } // criando as ações para a barra de rolagem _root.rolagem.drag.onPress = function():Void{ var xmin = this._x; var xmax = this._x; var ymin = 0; var ymax = this._parent.fundo._height - this._height; this.startDrag(false, xmin, ymin, xmax, ymax); this.onRelease = this.onReleaseOutside = function():Void{ stopDrag(); delete this.onMouseMove(); } this.onEnterFrame = function():Void{ _root.tudo_mc._y += (-Math.round((this._y / ymax) * (altura - _root.rolagem._height)) - _root.tudo_mc._y)/3; } } } // carregando o arquivo XML externo, gerado através de php e mysql meuXML.load("galeria1.xml"); Não tem muito o que inventar nesta parte. Você está executando ações básicas para dar um loop nas imagens encontradas no xml, exibindo, etc. Vamos falar sobre a geração do xml, através do PHP. Note que no último trecho do código acima, temos: meuXML.load("galeria1.xml"); É sobre a geração deste XML que vou falar agora. Então o segundo passo, é ter uma tabela de onde puxar as informações das fotos. Imagens, Thumbnails, Titulos das fotos. Veja o exemplo da minha tabela "galfotos" : CREATE TABLE `galfotos` (`idfoto` INT( 5 ) NOT NULL AUTO_INCREMENT, `nomefoto` VARCHAR( 255 ) NOT NULL , `thumbfoto` VARCHAR( 255 ) NOT NULL , `titulofoto` VARCHAR( 255 ) NOT NULL ) ENGINE = MYISAM ; Onde: "nomefoto" = nomedafoto.jpg "thumbfoto" = thumb_dafoto.jpg "titulofoto" = Titulo dado à imagem Inclua alguns registros nesta tabela, como abaixo: INSERT INTO `galfotos` ( `idfoto` , `nomefoto` , `thumbfoto` , `titulofoto` ) VALUES ('', 'img3.jpg', 'thumb3.jpg', 'Tomatinho sendo cortado', ), ( '', 'img2.jpg', 'thumb2.jpg', 'Festa do morango'); Baseado nisso, crie um arquivo chamado "pegafotos", com a extensão .php, para começarmos a trazer desta tabela do banco de dados, os resultados que serão gravados no XML, e que consequentemente, serão lidos pelo flash. ______________________________________________ pegafotos.php : <?php require_once('../../../Connections/testes.php'); // conexão padrão do dreamweaver. ?> <?php mysql_select_db($database_testes, $testes); $query_fotos = "SELECT * FROM galfotos"; $fotos = mysql_query($query_fotos, $testes) or die(mysql_error()); $row_fotos = mysql_fetch_assoc($fotos); $totalRows_fotos = mysql_num_rows($fotos); $fotogrande = $row_fotos['nomefoto']; $thumbfoto = $row_fotos['thumbfoto']; $descfoto = $row_fotos['titulofoto']; ?> <? // gravando o documento XML e encapsulando o resultado na variável $xml $xml = "<?xml version="1.0" encoding="iso-8859-1" ?> "; // abrindo o nó principal $xml .= "<fotos>"; // abrindo o while com os dados das fotos, isso delimita cada bloco de informações de fotos com seus respectivos dados(subnós) dentro deste nó do { // subnós de informações - nome da foto, thumbnail da foto, título de apresentação da foto $xml .="<foto grande="$fotogrande" thumb="$thumbfoto" desc="$descfoto" />"; // fechando o while dos dados } while ($row_fotos = mysql_fetch_assoc($fotos)); // fechando o nó principal $xml .="</fotos>"; $fp = @fopen('galeria1.xml','w'); if(!$fp) { die('Não foi possivel abrir o XML'); } $write = fwrite($fp,$xml); if(!$write) { die('Não foi possivel gravar os dados no XML'); }else { echo "Dados gravados com sucesso no XML galeria1.xml"; fclose($fp); } mysql_free_result($fotos); ?> Agora que você gerou um xml com o conteúdo presente no banco de dados, você pode abrir o swf gerado (à partir do .fla que você baixou no início) e ver que todas as imagens presentes no XML, estão sendo mostradas no seu swf flash! Clique aqui para ver o exemplo em funcionamento no meu site. Se tiver dúvidas, escreva pra mim através do formulário de contato do meu site: www.flaviajobs.com.br E não esqueça de mencionar o nome do artigo aqui do Plugmasters. :) Arquivos anexos ao artigo
Artigos relacionados
Links relacionados
Este artigo é a parte 2 de 2 da seguinte série:
fabiana
o link do fla está ruim : Não avaliado
Flávia Jobstraibizer <fjferr@gmail.com>
O link do fla não está ruim. Basta clicar no mesmo com o botão direito do mouse e depois em "Salvar destino como". Abraço. : Não avaliado
Rafael <fael1999@hotmail.com>
1. vc não fala se as fotos devem estar na mesma pasta. Acredito que sim, mas vc não fala.
2.na conexão, quem é esse testes.php. Bom, deve ser sua conexão, mas é de fato? 3.de que maneira mando esses arquivos ao mysql? obrigado. Rafa ![]() ![]() ![]() ![]() ![]() Leonardo <baladafest2003@hotmail.com>
O arquivo fla não abre no flash
![]() ![]() ![]() ![]() ![]() Flávia Jobstraibizer <fjferr@gmail.com>
Utilize uma versão mais recente do Flash, visto que este .fla foi salvo em Flash MX 8 Professional. Abraço. : Não avaliado
everton <netlink@pop.com.br>
arruma esse link do .fla ae caraio
: Não avaliado Flavia Jobstraibizer <fjferr@gmail.com>
Se vc não sabe nem fazer um download amigo, se mata. : Não avaliado
guerreiro <rguerreiro20@hotmail.com>
o link tem um # a mais se o tirarem ja da
fiquem bem ![]() ![]() ![]() ![]() ![]() Cassiano Doneda <cassianodoneda@hotmail.com>
Olá Pessoal,
Para quem não esta conseguindo fazer o download faz o seguinte.. Clica no link e depois que aparecer a mensagem de pagina nao encontrada, tira o %20 Isso significa que ela deixou um espaço no link e dai nao ta indo pro endereço correto.. blz ??? ![]() ![]() ![]() ![]() ![]() Alexandre <korynder4@hotmail.com>
Gostaria de saber como eu faço a chamada do script PHP "pegafoto.php" pelo Flash, para que ele gere o arquivo XML
![]() ![]() ![]() ![]() ![]() Luiz Alberto <luiz.albert@gmail.com>
Cara Flavia, enviei um e-mail para ter uma ajuda sua.
Aguardo resposta. ![]() ![]() ![]() ![]() ![]() Filipe
No pc funciona mas quando jogo no servidor ele não abre as fotos, pq? :/ : Não avaliado
Angelo Lefundes <angelolefundes@yahoo.com.br>
Apague no final da URL o %20
![]() ![]() ![]() ![]() ![]() 50x <bricker.50x@gmail.com>
meu fash não consegue abrir o fla.. tem como colocar uma versão inferior ai..??
![]() ![]() ![]() ![]() ![]() Flávia Jobstraibizer <fjferr@gmail.com>
ATUALIZE O SEU FLASH, AMIGO. EU FAÇO NA VERSÃO QUE PREFIRO, SE NÃO ABRE NO SEU, NÃO É CULPA MINHA. Aliás, vou pedir pro site descadastrar esse artigo. é muito fácil nego vir reclamar. quero ver vir fazer igual. : Não avaliado
Wítalo da Luz Rebouças <tilowr@gmail.com>
Olá, bem flavia infelzimente sou obrigado a concordar com as pessoas que postaram acima seu link naum está funcionando mesmo, se vc puder me enviar o arquivo ficarei muito grato, sem mais. : Não avaliado
Wítalo da Luz Rebouças <tilowr@gmail.com>
Flavia, Só agora li seu ultimo post acredito que vc seja uma boa profissional e entendo a sua indignação, mais naum acho que isso seja motivo para vc despejala em comentarios e naum é bo mnem pra vc nem para quem respeita os proficionais da area! se quiser converssar pode me ass no msn foxobom@hotmail.com espero que possamos trocar varias informaçeos uteis (trabalho com phpMySQL) abraços! : Não avaliado
Wítalo da Luz Rebouças <tilowr@gmail.com>
Apenas uma sugestão, vc não acha que seria interecante se vc salva-se como versão anterior o arquivo, continue desenvolvendo no flash 8 porem salve em uma versão mais acessesivel assim seu trabalho seria melhor divulgado! espero que ter somado algo nesse comentario, abraços! : Não avaliado
smille <smille-mc@hotmail.com>
oi vc poderia me ensinar como se faz
está postagem de comentários ![]() ![]() ![]() ![]() ![]() Devil <devil@gmeiu.com>
Eu consegui baixar. è só clicar no link.
O fato de colocar espaço no nome do arquivo é coisa de mirim... Afinal, colocar um filtro no php, na hora do upload, que filtre este erro, num site que, quem posta são técnicos e(ou) professores, acredito que não foi nem cogitado. Quando faço interfaces administrativas para leigos postarem arquivos, faço todos os filtros possíveis e sempre há acertos posteriores ao uso. Sempre pelo mesmo motivo: Acentos e espaços nos nomes de arquivos... ![]() ![]() ![]() ![]() ![]() Rodrigo <rodrigoalex@grupouniversos.com>
Seguindo a analogia, acho que faltou o arquivo teste.php que envia as fotos (admin). Você pode posta-lo Flávia? Pois como vou enviar as fotos? : Não avaliado
Supertelnet <atendimento@supertelnet.com>
Mto bom Flavinha, sou seu fã, vc sumiu do IM!!! to vendo que os leitores aqui nao estao buscando informaçoes e sim alguem que faça por eles o que eles nao conseguem. Mto legal mesmo. Pra completar vc poderia colocar, pra facilitar ainda mais a vida desses nobres leitores um esquema com OPENDIR() pq ai se elimina o caexao com db.... parabens
![]() ![]() ![]() ![]() ![]() Ricardo Fernandes da Silva <a6brick@yahoo.com.br>
Olá, pois gostei mt mt mt mt deste site, vlw ai !!!!
![]() ![]() ![]() ![]() ![]() Dunga <dunganet@gmail.com>
PÁIA!!!
Vc roubou esse código do Diogo Pitz...mané!!! ![]() ![]() ![]() ![]() ![]() Raissam Abu Gzali Saldanha <raissam.abu@gmail.com>
bahh mto fraco esse pessoal ae naum sabem fazer um download nem importar um arquivo d uma versão superior, procurem no google tah cheio de conversor de flash 8 pra inferior, logico que talvez alguma coisa não funcione mas fazer o que né...adapte.
mto bom o tutorialll, e naum perca a cabeça com bobagens esse pessoal naum sabe nem o que fala ;), e ainda se dizem profissionais de pogramação abraçoss ![]() ![]() ![]() ![]() ![]() anonimo <anonimo@gmail.com>
Que falta de postura de um colunista ficar xingando os outros
![]() ![]() ![]() ![]() ![]() italo souza <italosecure-site@yahoo.com.br>
muito bom, exatamente o que procurava, estava com serios problemas para criar os thumbs... o codigo funcionou perfeitamente, o exemplo tambem...
fica fria, "nosso limite esta ligeiramente ligado a nossa capacidade.." ;) ![]() ![]() ![]() ![]() ![]() Vanessa <vanessaciangoli@hotmail.com>
Conseguí fazer tudo, funcionou, mas quando faço a inserção do swf em uma página html e publico na web ela não abre... alguém pode me ajudar urgente!!!Será que eu tenho que salvar a página em outra extensão? Help!
![]() ![]() ![]() ![]() ![]() Juliano <garrett_almeida@hotmail.com>
Muito bom flavinha, seu artigo foi excelente, parabéns mesmo.
![]() ![]() ![]() ![]() ![]() allan <suvacodemorcego@hotmail.com>
ae o plugmasters é o melhor site de dica da atulidade haaahu parabens pelo trbalho da galera ae
![]() ![]() ![]() ![]() ![]() Wander <wander@pressmundi.com.br>
Você poderia me mandar por e-mail somente o arquivo XML que seu script gera. Gostaria de avaliá-lo sem ter que rodar o arquivo PHP.
Grato. Wander ![]() ![]() ![]() ![]() ![]() a <ae@a>
aa
![]() ![]() ![]() ![]() ![]() Black Dragon Designers <black_dragon0010@hotmail.com>
Estou fazendo algumas modificações para o caso da inclusão de dados, basta apenas criar um formulário em php para estar enviando as fotos sugiro no caso de publicação na web este formulário seja colocado na parte administrativa do site e protegido por senha para tanto temos tmb q criar uma parte de alteração e uma de exclusão no caso da alteração onde esta escrito insert into basta mudar para update, bom mas vias de fatos estarei fazendo as alterações e tentarei publicar os arquivos caso não tenhe muito tempo me mande um e-mail e estarei transmitindo os arquivos em php para vcs.
abraço Black Dragon Designers ![]() ![]() ![]() ![]() ![]() Leonardo Gazio <lngsmattos@hotmail.com>
Puta que pariu mulher!! Como você é ignorante, o cara não falou nada de mais, vou te falar uma coisa cara, VOCÊ TÁ NA ÁREA ERRADA!!!, Não é o artigo que tem que sair não porque o artigo é bom, agora você como pessoa cara, É LIXO!!!
""ATUALIZE O SEU FLASH, AMIGO. EU FAÇO NA VERSÃO QUE PREFIRO, SE NÃO ABRE NO SEU, NÃO É CULPA MINHA. Aliás, vou pedir pro site descadastrar esse artigo. é muito fácil nego vir reclamar. quero ver vir fazer igual. : Não avaliado"" : Não avaliado Flavia
Tô pouco me lixando com seu comentário.
![]() ![]() ![]() ![]() ![]() jamilson <jamilson@mundocapixaba.com.br>
Olá Flávia!!! Li todos os comentários e, acho que vc deveria colocar para download todos os arquivos (Que tal uma pastinha com o arquivo inteiro, incluindo as fotos e o .php?). Eliminaria um bocado de problemas. Um abraço e, continue com o seu trabalho, pode ajudar a formar muitos profissionais. (As críticas sempre existirão).
![]() ![]() ![]() ![]() ![]() Felipe Augusto <felipe_web@microcamp.com.br>
Oi Flávia achei que sua galeria de fotos ficou meio sem sal, se você coloca-se alguns efeitos na troca de foto e animace mais a galeria ao todo ficaria bem mais chamativo e moderno.
Beijão ![]() ![]() ![]() ![]() ![]() Bertolla <bertolla@kwk.com.br>
num funciona nem a pau!!! hehe...na boa hem!
![]() ![]() ![]() ![]() ![]() beto <beto@e-rooster.com>
Flavia achei muito legal o esquema da sua galeria, gostaria de implementar num modelo que estou fazendo mas preciso fazer com que a primeira imagem do thumb ja seja exibida no tamanho maior independente de clicar. poderia me ajudar.. Grato ... Andei lendo os comentarios deixados pelos outros e é como voce diz... criticar é facil quero ver fazer... t garota
aguardo seu contato ok ![]() ![]() ![]() ![]() ![]() ![]() |
|
|