olliver 0 Denunciar post Postado Abril 21, 2009 Boa tarde pessoal. Estou gerando um XML aqui através de um PHP, porém não estou conseguindo gerá-lo com divisões de nós... Bom, trata-se de uma galeria de fotos, e o seu XML é dividido em 3 nós. Preciso gerar um XML com esta estrutura: <?xml version="1.0" encoding="utf-8" ?> <photography> <galleries name="1st gallery"> <pic id="1"> <image>1b.jpg</image> <title>galeria 1, foto 1</title> <descriptions>Lorem ipsum dolor sit amet</descriptions> <thumbnail>1s.jpg</thumbnail> <link>http://www.1.com</link> </pic> <pic id="2"> <image>2b.jpg</image> <title>galeria 1, foto 2</title> <descriptions>consectetuer adipiscing elit</descriptions> <thumbnail>2s.jpg</thumbnail> <link>http://www.2.com</link> </pic> <pic id="3"> <image>3b.jpg</image> <title>galeria 1, foto 3</title> <descriptions>consectetuer dec adipiscing elit</descriptions> <thumbnail>3s.jpg</thumbnail> <link>http://www.3.com</link> </pic> </galleries> <galleries name="2nd gallery"> <pic id="4"> <image>4b.jpg</image> <title>galeria 2, foto 4</title> <descriptions>Nunc quis sem nec tellus blandit</descriptions> <thumbnail>4s.jpg</thumbnail> <link>http://www.4.com</link> </pic> <pic id="5"> <image>5b.jpg</image> <title>galeria 2, foto 5</title> <descriptions>Duis vitae velit sed dui malesuada</descriptions> <thumbnail>5s.jpg</thumbnail> <link>http://www.5.com</link> </pic> <pic id="6"> <image>6b.jpg</image> <title>galeria 2, foto 6<title> <descriptions>Duis vitae velit sed dui malesuada</descriptions> <thumbnail>6s.jpg</thumbnail> <link>http://www.6.com</link> </pic> </galleries> </photography> Percebam que tenho 3 nós (photography, galleries, pic), e o nó <galleries> "divide" as galerias de fotos que tenho, contendo todas as fotos de cada uma das galerias ( nó <pic> )... o problema é que to gerando esse XML com erro... ele não aparece com essas divisões de galleries (1st gallerie, 2nd gallerie). Todos os nós <pic> aparecem dentro de uma única galeria apenas... vejam só como está a estrutura desse meu XML que estou gerando: <?xml version="1.0" encoding="utf-8" ?> <photography> <galleries name="1st gallery"> <pic id="1"> <image>1b.jpg</image> <title>galeria 1, foto 1</title> <descriptions>Lorem ipsum dolor sit amet</descriptions> <thumbnail>1s.jpg</thumbnail> <link>http://www.1.com</link> </pic> <pic id="2"> <image>2b.jpg</image> <title>galeria 1, foto 2</title> <descriptions>consectetuer adipiscing elit</descriptions> <thumbnail>2s.jpg</thumbnail> <link>http://www.2.com</link> </pic> <pic id="3"> <image>3b.jpg</image> <title>galeria 1, foto 3</title> <descriptions>consectetuer adipiscing elit</descriptions> <thumbnail>3s.jpg</thumbnail> <link>http://www.3.com</link> </pic> <!-- AQUI ERA PRA INICIAR UMA SEGUNDA GALERIA: 2ND GALLERIE --> <pic id="4"> <image>4b.jpg</image> <title>galeria 2, foto 4</title> <descriptions>Nunc quis sem nec tellus blandit</descriptions> <thumbnail>4s.jpg</thumbnail> <link>http://www.4.com</link> </pic> <pic id="5"> <image>5b.jpg</image> <title>galeria 2, foto 5</title> <descriptions>Duis vitae velit sed dui malesuada</descriptions> <thumbnail>5s.jpg</thumbnail> <link>http://www.5.com</link> </pic> <pic id="6"> <image>6b.jpg</image> <title>galeria 2, foto 6<title> <descriptions>Duis vitae velit sed dui malesuada</descriptions> <thumbnail>6s.jpg</thumbnail> <link>http://www.6.com</link> </pic> </galleries> </photography> a minha tabela SQL está com a seguinte estrutura: -- Estrutura da tabela `photography` CREATE TABLE `photography` ( `id` int(11) NOT NULL auto_increment, `gallery` varchar(200) NOT NULL default 56b 39;0', `image` varchar(255) NOT NULL default '0', `title` varchar(255) NOT NULL default '0', `descriptions` text NOT NULL, `thumbnail` varchar(255) NOT NULL default '0', `link` varchar(255) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM; -- Extraindo dados da tabela `photography` INSERT INTO photography VALUES("01", "1st gallery", "1b.jpg", "galeria 1 foto 1", "Lorem ipsum ...", "1s.jpg", "http://www.1.com"); INSERT INTO photography VALUES("02", "1st gallery", "2b.jpg", "galeria 1 foto 2", "consectetuer adipi ...", "2s.jpg", "http://www.2.com"); INSERT INTO photography VALUES("03", "1st gallery", "3b.jpg", "galeria 1 foto 3", "consectetuer adipi ...", "3s.jpg", "http://www.3.com"); INSERT INTO photography VALUES("04", "2nd gallery", "4b.jpg", "galeria 2 foto 4", "Nunc quis sem ...", "4s.jpg", "http://www.4.com"); INSERT INTO photography VALUES("05", "2nd gallery", "5b.jpg", "galeria 2, foto 5", "Duis vitae velit ...", "5s.jpg", "http://www.5.com"); INSERT INTO photography VALUES("06", "2nd gallery", "6b.jpg", "galeria 2, foto 6", "Duis vitae velit ...", "6s.jpg", "http://www.6.com"); e por fim, o meu PHP que gera o XML: <?php include("includes/config.php"); ?> <?php /* BUSCAMOS OS VALORES NO BANCO DE DADOS */ $consulta = mysql_query("SELECT id,gallery,image,title,descriptions,thumbnail,link FROM photography ORDER BY id ASC"); /* Retorna o número de linhas do resultado */ $row=mysql_num_rows($consulta); /* Verificamos se retornou algum resultado */ if($row>0){ /* Manda a mensagem para o Flash */ print ""; /* INICIAMOS A GERAÇÃO DO XML, COM OS VALORES DO BD */ $conteudo = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><photography>"; /* Para cada item retornado */ for($i=0; $i<$row; $i++) { /* Recuperamos o ID */ $id = mysql_result($consulta,$i,"id"); /* Recuperamos o GALLERY */ $gallery = mysql_result($consulta,$i,"gallery"); /* Recuperamos a IMAGE */ $image = mysql_result($consulta,$i,"image"); /* Recuperamos o TITLE */ $title = mysql_result($consulta,$i,"title"); /* Recuperamos a DESCRIPTIONS */ $descriptions = mysql_result($consulta,$i,"descriptions"); /* Recuperamos o THUMBNAILS */ $thumbnails = mysql_result($consulta,$i,"thumbnails"); /* Recuperamos o LINK */ $link = mysql_result($consulta,$i,"link"); /* Inserimos os valores recuperados nas respectivas tags */ $conteudo .= "<galleries><pic><image>"; $conteudo .= $image; $conteudo .= "</image><title>"; $conteudo .= $title; $conteudo .= "</title><descriptions>"; $conteudo .= $descriptions; $conteudo .= "</descriptions><thumbnails>"; $conteudo .= $thumbnails; $conteudo .= "</thumbnails><link>"; $conteudo .= $link; $conteudo .= "</link></pic></galleries>"; } /* Fechamos a tag tabela */ $conteudo .= "</photography>"; /* Se existir, abrimos o arquivo photography.xml para leitura e escrita */ /* Se não existir criamos o arquivo tabela.xml */ $ponteiro = fopen("xmlphpcss/photography.xml", "w"); /* Escremos o conteúdo dentro do arquivo selecionado */ /* Codificamos para UTF8 os campos para não dar problemas com acentuação */ fwrite($ponteiro, utf8_encode($conteudo)); /* Fechamos o arquivo */ fclose($ponteiro); /* Se não retornou nenhum resultado */ } else { /* Manda a mensagem de erro para o Flash */ print "&erro=Não existe nenhum registro na Tabela!&erroMensagem=1"; } ?> Alguém tem alguma idéia de como posso corrigir isso? Agradeço a paciência. Rafael Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Abril 21, 2009 Bom isso é problema de PHP com XML To mandando para area de PHP, pois seu problema não é com flash! Abraços Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Abril 21, 2009 você precisa fazer 2 laços encaixados. Sendo o primeiro para formar as galerias, e o interno para dizer quais fotos pertencem à tal galeria.. Compartilhar este post Link para o post Compartilhar em outros sites
olliver 0 Denunciar post Postado Abril 22, 2009 foi mal pelo post errado. Então William, essa divisão que tá me dando uma dor de cabeça cara... nao to acertando nela. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Abril 22, 2009 /* BUSCAMOS OS VALORES NO BANCO DE DADOS */ $q = mysql_query("SELECT gallery FROM photography GROUP BY gallery "); $row = mysql_num_rows( $q ); if( $row > 0 ) { $conteudo = '<?xml version=\"1.0\" encoding=\"utf-8\" ?>'."\n".'<photography>'."\n"; while( $dados = mysql_fetch_assoc( $q ) ) { $conteudo .= "\t".'<galleries name="'.$dados['gallery'].'">'."\n"; $sql = "SELECT * FROM `photography` WHERE `gallery` = '{$dados['gallery']}' "; $q2 = mysql_query( $sql ); while( $dados2 = mysql_fetch_assoc($q2) ) { $conteudo .= "\t\t".'<pic id="'.$dados2['id'].'">'."\n"; $conteudo .= "\t\t\t".'<image>'.$dados2['image'].'</image>'."\n"; $conteudo .= "\t\t\t".'<title>'.$dados2['title'].'</title>'."\n"; $conteudo .= "\t\t\t".'<descriptions>'.$dados2['descriptions'].'</descriptions>'."\n"; $conteudo .= "\t\t\t".'<thumbnails>'.$dados2['thumbnails'].'</thumbnails>'."\n"; $conteudo .= "\t\t\t".'<link>'.$dados2['link'].'</link>'."\n"; $conteudo .= "\t\t".'</pic>'."\n"; } $conteudo .= "\t".'</galleries>'."\n"; } $conteudo .= "</photography>"; echo $conteudo; } Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Abril 22, 2009 Veja um exemplo que eu criei exatamente para mostrar como gerar xml usando DOM http://forum.imasters.com.br/index.php?showtopic=339929 Compartilhar este post Link para o post Compartilhar em outros sites
olliver 0 Denunciar post Postado Abril 22, 2009 William, valeu cara, funcionou certinho, só precisei add o caminho p gerar o arquivo xml. Fabyo, vou dar uma lida no tópico indicado, assim eu aprendo e não torro mais a paciência do pessoal, hehehe. Valeuss Abraço Compartilhar este post Link para o post Compartilhar em outros sites