Ir para conteúdo

Arquivado

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

Lost Dark

[Resolvido] Gerar XML com PHP

Recommended Posts

Olá a todos com a ajuda de um tuto da Web fiz o seguinte script

 

<?php

/*Criando a conexão com BD*/
$conn = mysql_connect('localhost','root','isma2008') or die ('Erro ao conectar');

$db = mysql_select_db('banco') or die ('Erro ao conectar com o banco de dados');

$query = mysql_query("SELECT * FROM sopraelas ORDER BY id")or die ('Erro na query');

$xml = "<xml version='1.0' enconding='UTF-8' ?>\n";
$xml .= "<sapatos> \n";
while($reg = mysql_fetch_object($query)){
          $xml .= "\t<sapato>\n";
          $xml .= "\t\t<id>$reg->id</id>\n";
          $xml .= "\t\t<imagem>$reg->imagem</imagem>\n";
          $xml .= "\t\t<descricao>$reg->descricao</descricao> \n";
          $xml .= "\t\t<preco>$reg->preco</preco> \n";
          $xml .= "\t</sapato>\n";
      }
	$xml .= "</sapatos>";

	$ponteiro = fopen('backup.xml', 'w'); //cria um arquivo com o nome backup.xml
	fwrite($ponteiro, $xml); // salva conteúdo da variável $xml dentro do arquivo backup.xml

	$ponteiro = fclose($ponteiro); //fecha o arquivo

?>

Só não retorna o XML apenas a pagina fica em branco!

alguem poderia me ajudar!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz assim ...

<?php
ob_start();

/*
 * ...
 */

$id = 9 ;
$imagem = 'http://' ;
$descricao = '...' ;
$preco = '99.99' ;

$Writer = new XMLWriter();

$Writer->openMemory();
$Writer->startDocument( '1.0' , 'utf-8' ) ;
$Writer->setIndent(true);

$Writer->startElement( 'sapatos' ) ;
$Writer->startElement( 'sapato' ) ;

$Writer->writeElement ( 'id' , $id ) ;
$Writer->writeElement ( 'imagem' , $imagem ) ;
$Writer->writeElement ( 'descricao' , $descricao ) ;
$Writer->writeElement ( 'preco' , $preco ) ;

$Writer->endElement();
$Writer->endElement();

$Output = $Writer->outputMemory ( true ) ;


$fHandle = fopen ( 'backup.xml' , 'w+' ) ;  
fwrite ( $fHandle , $Output ) ;
fclose ( $fHandle ) ;


header ( 'Content-Type: text/xml;charset=utf-8' ) ;
echo $Output;

 

Saída no arquivo e no navegador:

<?xml version="1.0" encoding="UTF-8"?>
<sapatos>
<sapato>
	<id>9</id>
	<imagem>http://</imagem>
	<descricao>...</descricao>
	<preco>99.99</preco>
</sapato>
</sapatos>

 

Só utilizar seu while agora para repetir o bloco de código ..

 

<?php
$Write = Array ( 
	0 => Array ( 
		'id' => 9 ,
		'imagem' => 'http://' ,
		'descricao' => 'Sapato de Couro' ,
		'preco' => '12.90'
	) ,
	1 => Array ( 
		'id' => 10 ,
		'imagem' => 'http://' ,
		'descricao' => 'Sapato' ,
		'preco' => '99.99'
	) 
) ;
$Writer = new XMLWriter();
$Writer->openMemory();
$Writer->startDocument( '1.0' , 'utf-8' ) ;
$Writer->setIndent(true);
$Writer->startElement( 'sapatos' ) ;
forEach ( $Write as $Nodes ) {
	   $Writer->startElement( 'sapato' ) ;
	   if ( is_array ( $Nodes ) ) 
		 forEach ( $Nodes as $nodeName => $nodeValue ) 
			$Writer->writeElement ( $nodeName , $nodeValue ) ;
	   $Writer->endElement();
}	
$Writer->endElement();

$Output = $Writer->outputMemory ( true ) ;

$fHandle = fopen ( 'backup.xml' , 'w+' ) ;  
fwrite ( $fHandle , $Output ) ;
fclose ( $fHandle ) ;

 

Saída no arquivo:

<?xml version="1.0" encoding="UTF-8"?>
<sapatos>
<sapato>
	<id>9</id>
	<imagem>http://</imagem>
	<descricao>Sapato de Couro</descricao>
	<preco>12.90</preco>
</sapato>
<sapato>
	<id>10</id>
	<imagem>http://</imagem>
	<descricao>Sapato</descricao>
	<preco>99.99</preco>
</sapato>
</sapatos>

 

Basta montar o array, que o código faz o resto .. no seu caso ficaria assim

 

 

<?php
ob_start();

$conn = mysql_connect( 'localhost' , 'root' , 'isma2008' ) or die ( 'Erro ao conectar' );
$db = mysql_select_db( 'banco' ) or die ( 'Erro ao conectar com o banco de dados' );
$query = mysql_query( "SELECT * FROM sopraelas ORDER BY id" ) or die ( 'Erro na query' );

while( $row = mysql_fetch_object( $query ) ) 
	$Write [ ] = $row ;

$Writer = new XMLWriter();
$Writer->openMemory();
$Writer->startDocument( '1.0' , 'utf-8' ) ;
$Writer->setIndent(true);
$Writer->startElement( 'sapatos' ) ;
forEach ( $Write as $Nodes ) {
	   $Writer->startElement( 'sapato' ) ;
	   if ( is_array ( $Nodes ) ) 
		 forEach ( $Nodes as $nodeName => $nodeValue ) 
			$Writer->writeElement ( $nodeName , $nodeValue ) ;
	   $Writer->endElement();
}	
$Writer->endElement();

$Output = $Writer->outputMemory ( true ) ;

$fHandle = fopen ( 'backup.xml' , 'w+' ) ;  
fwrite ( $fHandle , $Output ) ;
fclose ( $fHandle ) ;

header ( 'Content-Type: text/xml;charset=utf-8' ) ;
echo $Output;

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Reinstalei tudo o XML que busca os dados direto do banco retornou o seguinte

 

 

 <?xml version="1.0" encoding="UTF-8" ?> 
- <sapatos>
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 <sapato /> 
 </sapatos>

 

Então man achei o erro

 

Nesta linha eu alterei de object para array e tive o retorno esperado

 while( $row = mysql_fetch_object( $query ) 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<sapatos>
<sapato>
 <id>1</id>
 <imagem>SAM_4273.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>2</id>
 <imagem>SAM_4275.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>89,00</preco>
</sapato>
<sapato>
 <id>3</id>
 <imagem>SAM_4273.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>4</id>
 <imagem>SAM_4273.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>5</id>
 <imagem>SAM_4275.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>89,00</preco>
</sapato>
<sapato>
 <id>6</id>
 <imagem>SAM_4273.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>7</id>
 <imagem>SAM_4275.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>89,00</preco>
</sapato>
<sapato>
 <id>8</id>
 <imagem>SAM_4273.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>9</id>
 <imagem>SAM_4275.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>89,00</preco>
</sapato>
<sapato>
 <id>10</id>
 <imagem>SAM_4273.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>11</id>
 <imagem>SAM_4275.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>89,00</preco>
</sapato>
<sapato>
 <id>12</id>
 <imagem>SAM_4273.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>13</id>
 <imagem>SAM_4275.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>89,00</preco>
</sapato>
<sapato>
 <id>14</id>
 <imagem>SAM_4273.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>15</id>
 <imagem>SAM_4275.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>89,00</preco>
</sapato>
<sapato>
 <id>16</id>
 <imagem>SAM_4273.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>17</id>
 <imagem>SAM_4275.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>89,00</preco>
</sapato>
<sapato>
 <id>18</id>
 <imagem>SAM_4273.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>19</id>
 <imagem>SAM_4275.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>89,00</preco>
</sapato>
<sapato>
 <id>20</id>
 <imagem>SAM_4273.jpg</imagem>
 <descricao>Lorum ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>21</id>
 <imagem>SAM_4348.jpg</imagem>
 <descricao>DESCRIȂO</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>22</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>23</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>24</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>25</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>26</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>27</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>28</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>29</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>30</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>31</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>32</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>33</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>34</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>35</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>36</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>37</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>38</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>39</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>40</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>41</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>42</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>43</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>44</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>45</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>46</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>47</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>48</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>49</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>50</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>51</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>52</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>53</id>
 <imagem>SAM_4305.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
<sapato>
 <id>54</id>
 <imagem>SAM_4295.jpg</imagem>
 <descricao>Lorum Ipslum</descricao>
 <preco>69,00</preco>
</sapato>
</sapatos>

Obrigado man pela ajuda vlw mesmo agora vou pesquisar para tentar usar usando o seu PAGINATOR.

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma pergunta e se tiver mais que uma imagem e não soubermos quantas imagens tem por item como vai ser gerado o XML ?

 

Algum exemplo por ai ?

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.