Ir para conteúdo

POWERED BY:

Arquivado

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

Carlos Antoliv

Só consigo pegar o primeiro registro do XML ao fazer loop com Foreach

Recommended Posts

Galera, to com uma situação que já pesquisei por bastante tempo e ainda não conseguir encontrar uma solutação adequada.

 

Estou tetando pegar informações de um xml e mostrar na tela aquilo que realmente é preciso. Consigo fazer isso, sem problemas.

 

A dificuldade encontra está em pegar outros dados que contenham a mesma TAG.

 

Por exemplo, se tem o número da ficha de uma pacinte no xml, também existem diversos exames que esse paciente realizou. Fica tudo no XML.

 

Outro exemplo,

<numeroFicha>123456789</numeroFicha>

<codigoProcedimento>44574782</codigoProcedimento>

<codigoProcedimento>44578442</codigoProcedimento>

<codigoProcedimento>44572154</codigoProcedimento>

 

Só é exibido o primeiro <codigoProcedimento>. Os outros, que estão relacionados ao mesmo número de ficha, não aparecem.

 

Já utilzei diversos códigos.

 

Vou postar um de exemplo:

 

 

 

------------------------------------------------------------------------------------------------------------------------------

 

<?php

 

$xml=simplexml_load_file('arquivo_xml.xml') or die("Error: Cannot create object");

 

 

 

foreach($xml->prestadorParaOperadora->loteGuias->guiasTISS->{'guiaSP-SADT'} as $books) {

 

echo $books->cabecalhoGuia->numeroGuiaPrestador." - ";

echo $books->procedimentosExecutados->procedimentoExecutado->procedimento->codigoProcedimento;

//echo $books->procedimentosExecutados->procedimentoExecutado->procedimento->codigoProcedimento;

echo "<br>";

 

 

}

 

?>

-------------------------------------------------------------------------------------------------------------------------------------------

 

 

Tô quebrando a "mufa" aqui..rs

 

Tiver como alguém dá um HELP aee! rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu testei aqui e deu certo

 

data.xml

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


<pacientes>
  <numeroFicha>123456789</numeroFicha>
  <codigoProcedimento>44574782</codigoProcedimento>
  <codigoProcedimento>44578442</codigoProcedimento>
  <codigoProcedimento>44572154</codigoProcedimento>
</pacientes>

index.php

<?php

if(file_exists("dados.xml")){
  $xml = simplexml_load_file("dados.xml");
  echo "<p>Número da Ficha: {$xml->numeroFicha}</p>";
  foreach($xml->codigoProcedimento as $key => $value) {
    echo "<p>Código do Procedimento: {$value}</p>";
  }
}else{
  print_r("Arquivo XML não encontrado!");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diegus Miestro, naõ consegui rodar o codigo que você postou aqui.

Mas acho que entendi a tua ideia.

Bom, vamos lá! Postei um código acima que explica a estrutura do xml.

 

Veja:

 

 

$xml=simplexml_load_file('arquivo_xml.xml') or die("Error: Cannot create object");
foreach($xml->prestadorParaOperadora->loteGuias->guiasTISS->{'guiaSP-SADT'} as $books) {
echo $books->cabecalhoGuia->numeroGuiaPrestador." - ";
echo $books->procedimentosExecutados->procedimentoExecutado->procedimento->codigoProcedimento;
//echo $books->procedimentosExecutados->procedimentoExecutado->procedimento->codigoProcedimento;
echo "<br>";
}
O xml tem essa estrutura:
prestadorParaOperadora->loteGuias->guiasTISS->{'guiaSP-SADT'}
e agora quero pegar essas tags:
- cabecalhoGuia->numeroGuiaPrestador
- procedimentosExecutados->procedimentoExecutado->procedimento->codigoProcedimento
O que acontece :
Dentro do xml, existe diversas fichas. E o codigo de procedimento pode se repetir deiversas vezes para um paciente.
Isso que não estou conseguindo fazer. Só está exibindo o primeiro codigo de procedimento que acha.
Tendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, vou postar o codido do XML. Percebam que existe uma tag chamada <numeroGuiaPrestador>, que é o número da Ficha do Paciente.

 

Vejam também que tem uma outra TAG chamada <codigoProcedimento></codigoProcedimento>

Codigo de procedimento é o exame que o paciente fez.

 

Quando executo o foreach, ele me retorna o numero <numeroGuiaPrestador> - até aqui está OK.

 

Mas o laço não me retornar TODOS os registros do <codigoProcedimento>, somente o primeiro que ele consegue ler.

 

Ele teria que me retonar TODOS os codigoProcedimento de um mesmo paciente. Mas não eh isso que está acontecendo.

 

 

 

Segue a estrutura do xml:

 

 

 

<?xml version="1.0" encoding="ISO-8859-1"?>

<mensagemTISS >

<cabecalho>

<identificacaoTransacao>

<tipoTransacao>ENVIO_LOTE_GUIAS</tipoTransacao>

<sequencialTransacao></sequencialTransacao>

<dataRegistroTransacao>2015-09-01</dataRegistroTransacao>

<horaRegistroTransacao>09:00:00</horaRegistroTransacao>

</identificacaoTransacao>

<origem>

<identificacaoPrestador>

<codigoPrestadorNaOperadora>21113</codigoPrestadorNaOperadora>

</identificacaoPrestador>

</origem>

<destino>

<registroANS>309222</registroANS>

</destino>

<versaoPadrao>3.02.00</versaoPadrao>

</cabecalho>

<prestadorParaOperadora>

<loteGuias>

<numeroLote></numeroLote>

<guiasTISS>

<guiaSP-SADT>

<cabecalhoGuia>

<registroANS>309222</registroANS>

<numeroGuiaPrestador>60000000000005</numeroGuiaPrestador>

</cabecalhoGuia>

<dadosBeneficiario>

<numeroCarteira></numeroCarteira>

<atendimentoRN>N</atendimentoRN>

<nomeBeneficiario>FULANDO DE TAL</nomeBeneficiario>

</dadosBeneficiario>

<dadosSolicitante>

<contratadoSolicitante>

<cpfContratado>00000000000</cpfContratado>

<nomeContratado>EUCRIDES</nomeContratado>

</contratadoSolicitante>

<profissionalSolicitante>

<conselhoProfissional>6</conselhoProfissional>

<numeroConselhoProfissional>00000000</numeroConselhoProfissional>

<UF>33</UF>

<CBOS>000000</CBOS>

</profissionalSolicitante>

</dadosSolicitante>

<dadosSolicitacao>

<dataSolicitacao>2015-08-24</dataSolicitacao>

<caraterAtendimento>1</caraterAtendimento>

</dadosSolicitacao>

<dadosExecutante>

<contratadoExecutante>

<codigoPrestadorNaOperadora>60840000000398</codigoPrestadorNaOperadora>

<nomeContratado>FUNDO DE QUINTAL</nomeContratado>

</contratadoExecutante>

<CNES>00000000</CNES>

</dadosExecutante>

<dadosAtendimento>

<tipoAtendimento>05</tipoAtendimento>

<indicacaoAcidente>2</indicacaoAcidente>

</dadosAtendimento>

<procedimentosExecutados>

<procedimentoExecutado>

<dataExecucao>2015-08-24</dataExecucao>

<procedimento>

<codigoTabela>22</codigoTabela>

<codigoProcedimento>40304361</codigoProcedimento>

<descricaoProcedimento>Hemograma sangue total</descricaoProcedimento>

</procedimento>

<quantidadeExecutada>1</quantidadeExecutada>

<reducaoAcrescimo>0,00</reducaoAcrescimo>

<valorUnitario>0,00</valorUnitario>

<valorTotal>0,00</valorTotal>

</procedimentoExecutado>

<procedimentoExecutado>

<dataExecucao>2015-08-24</dataExecucao>

<procedimento>

<codigoTabela>22</codigoTabela>

<codigoProcedimento>40302040</codigoProcedimento>

<descricaoProcedimento>Glicose soro</descricaoProcedimento>

</procedimento>

<quantidadeExecutada>1</quantidadeExecutada>

<reducaoAcrescimo>0,00</reducaoAcrescimo>

<valorUnitario>0,00</valorUnitario>

<valorTotal>0,00</valorTotal>

</procedimentoExecutado>

<procedimentoExecutado>

<dataExecucao>2000-08-00</dataExecucao>

<procedimento>

<codigoTabela>22</codigoTabela>

<codigoProcedimento>40302580</codigoProcedimento>

<descricaoProcedimento>Ureia soro</descricaoProcedimento>

</procedimento>

<quantidadeExecutada>1</quantidadeExecutada>

<reducaoAcrescimo>0,00</reducaoAcrescimo>

<valorUnitario>0,00</valorUnitario>

<valorTotal>0,00</valorTotal>

</procedimentoExecutado>

<procedimentoExecutado>

<dataExecucao>2000-08-00</dataExecucao>

<procedimento>

<codigoTabela>22</codigoTabela>

<codigoProcedimento>40301630</codigoProcedimento>

<descricaoProcedimento>Creatinina soro</descricaoProcedimento>

</procedimento>

<quantidadeExecutada>1</quantidadeExecutada>

<reducaoAcrescimo>1.00</reducaoAcrescimo>

<valorUnitario>2.80</valorUnitario>

<valorTotal>2.80</valorTotal>

</procedimentoExecutado>

<procedimentoExecutado>

<dataExecucao>2000-08-00</dataExecucao>

<procedimento>

<codigoTabela>22</codigoTabela>

<codigoProcedimento>40301150</codigoProcedimento>

<descricaoProcedimento>Acido Urico soro</descricaoProcedimento>

</procedimento>

<quantidadeExecutada>1</quantidadeExecutada>

<reducaoAcrescimo>1.00</reducaoAcrescimo>

<valorUnitario>2.80</valorUnitario>

<valorTotal>2.80</valorTotal>

</procedimentoExecutado>

<procedimentoExecutado>

<dataExecucao>2000-08-00</dataExecucao>

<procedimento>

<codigoTabela>22</codigoTabela>

<codigoProcedimento>40302733</codigoProcedimento>

<descricaoProcedimento>Hemoglobina glicada por imunoensaio sangue total</descricaoProcedimento>

</procedimento>

<quantidadeExecutada>1</quantidadeExecutada>

<reducaoAcrescimo>0,00</reducaoAcrescimo>

<valorUnitario>0,00</valorUnitario>

<valorTotal>0,00</valorTotal>

</procedimentoExecutado>

<procedimentoExecutado>

<dataExecucao>2000-08-00</dataExecucao>

<procedimento>

<codigoTabela>22</codigoTabela>

<codigoProcedimento>40301958</codigoProcedimento>

<descricaoProcedimento>Frutosamina soro</descricaoProcedimento>

</procedimento>

<quantidadeExecutada>1</quantidadeExecutada>

<reducaoAcrescimo>1.00</reducaoAcrescimo>

<valorUnitario>9.00</valorUnitario>

<valorTotal>9.00</valorTotal>

</procedimentoExecutado>

<procedimentoExecutado>

<dataExecucao>2000-08-00</dataExecucao>

<procedimento>

<codigoTabela>22</codigoTabela>

<codigoProcedimento>40316360</codigoProcedimento>

<descricaoProcedimento>Insulina simplificada soro</descricaoProcedimento>

</procedimento>

<quantidadeExecutada>1</quantidadeExecutada>

<reducaoAcrescimo>1.00</reducaoAcrescimo>

<valorUnitario>11.00</valorUnitario>

<valorTotal>0,00</valorTotal>

</procedimentoExecutado>

<procedimentoExecutado>

<dataExecucao>2000-08-00</dataExecucao>

<procedimento>

<codigoTabela>22</codigoTabela>

<codigoProcedimento>40302750</codigoProcedimento>

<descricaoProcedimento>Lipidograma especial soro</descricaoProcedimento>

</procedimento>

<quantidadeExecutada>1</quantidadeExecutada>

<reducaoAcrescimo>0,00</reducaoAcrescimo>

<valorUnitario>0,00</valorUnitario>

<valorTotal>0,00</valorTotal>

</procedimentoExecutado>

<procedimentoExecutado>

<dataExecucao>2000-08-00</dataExecucao>

<procedimento>

<codigoTabela>22</codigoTabela>

<codigoProcedimento>40312151</codigoProcedimento>

<descricaoProcedimento>Hepatograma para regionais soro</descricaoProcedimento>

</procedimento>

<quantidadeExecutada>1</quantidadeExecutada>

<reducaoAcrescimo>0,00</reducaoAcrescimo>

<valorUnitario>0,00</valorUnitario>

<valorTotal>0,00</valorTotal>

</procedimentoExecutado>

<procedimentoExecutado>

<dataExecucao>2015-08-24</dataExecucao>

<procedimento>

<codigoTabela>22</codigoTabela>

<codigoProcedimento>40316521</codigoProcedimento>

<descricaoProcedimento>Hormonio Tireoestimulante soro</descricaoProcedimento>

</procedimento>

<quantidadeExecutada>1</quantidadeExecutada>

<reducaoAcrescimo>1.00</reducaoAcrescimo>

<valorUnitario>00,00</valorUnitario>

<valorTotal>00,00</valorTotal>

</procedimentoExecutado>

<procedimentoExecutado>

<dataExecucao>2000-08-00</dataExecucao>

<procedimento>

<codigoTabela>22</codigoTabela>

<codigoProcedimento>40316491</codigoProcedimento>

<descricaoProcedimento>T4 livre por eletroquimioluminescencia soro</descricaoProcedimento>

</procedimento>

<quantidadeExecutada>1</quantidadeExecutada>

<reducaoAcrescimo>1.00</reducaoAcrescimo>

<valorUnitario>00,00</valorUnitario>

<valorTotal>00,00</valorTotal>

</procedimentoExecutado>

<procedimentoExecutado>

<dataExecucao>2015-08-24</dataExecucao>

<procedimento>

<codigoTabela>22</codigoTabela>

<codigoProcedimento>40305767</codigoProcedimento>

<descricaoProcedimento>Gonadotrofina Corionica soro</descricaoProcedimento>

</procedimento>

<quantidadeExecutada>1</quantidadeExecutada>

<reducaoAcrescimo>1.00</reducaoAcrescimo>

<valorUnitario>00,00</valorUnitario>

<valorTotal>00,00</valorTotal>

</procedimentoExecutado>

<procedimentoExecutado>

<dataExecucao>2000-08-00</dataExecucao>

<procedimento>

<codigoTabela>22</codigoTabela>

<codigoProcedimento>40311210</codigoProcedimento>

<descricaoProcedimento>Urina Exame de com contagem manual urina jato m</descricaoProcedimento>

</procedimento>

<quantidadeExecutada>1</quantidadeExecutada>

<reducaoAcrescimo>1.00</reducaoAcrescimo>

<valorUnitario>2.80</valorUnitario>

<valorTotal>2.80</valorTotal>

</procedimentoExecutado>

<procedimentoExecutado>

<dataExecucao>2000-08-00</dataExecucao>

<procedimento>

<codigoTabela>22</codigoTabela>

<codigoProcedimento>40303110</codigoProcedimento>

<descricaoProcedimento>Parasitologico Ritchie modificado fezes</descricaoProcedimento>

</procedimento>

<quantidadeExecutada>1</quantidadeExecutada>

<reducaoAcrescimo>0,00</reducaoAcrescimo>

<valorUnitario>0,00</valorUnitario>

<valorTotal>0,00</valorTotal>

</procedimentoExecutado>

</procedimentosExecutados>

<observacao>6330070245</observacao>

<valorTotal>

<valorProcedimentos>000,00</valorProcedimentos>

<valorTaxasAlugueis>0</valorTaxasAlugueis>

<valorMateriais>0</valorMateriais>

<valorMedicamentos>0</valorMedicamentos>

<valorTotalGeral>000,00</valorTotalGeral>

</valorTotal>

</guiaSP-SADT>

 

 

 

 

Lembrando que essa estrutura pode se repetir por 70 vezes dentro de um mesmo XML porque cada numeroGuaPrestador é uma ficha. E cada ficha contém os dados do paciente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse é mesmo todo o XML? porque ele tá incompleto.

 

Abriu e fechou o guiaSP-SADT, mas não fechou os pais desse elemento como o guiasTISS, loteGuias, prestadorParaOperadora e mensagemTISS, olha se isso é o problema no teu código

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falaee!! Bom diaa, Diegus!

 

Seguinte, seguinte...

 

Tudo que estiver dentro de <guiaSP-SADT></guiaSP-SADT> representa todos os dados de um único paciente.

Portanto essa TAG(<guiaSP-SADT>) pode se repetir 70 vezes(ou melhor, 140 vezes).

 

Só coloquei o codigo que estou tentando entender como pegar, que é o <codigoProcedimento>. Como eu falara, esse codigo se repete várias vezes para um paciente, que está dentro da TAG <guiaSP-SADT>.

 

 

Eu só não coloquei os fechamentos pra gente aqui.

 

tendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou postar agora...

só que vou ter que excluir algumas linhas que se repetem.

Eu queria postar o arquivo original, mas é confidencial para deixar a publico, entende?

 

A não ser que enviasse por email.



esse é o fechamento do exml que postei acima:

 

 

</prestadorParaOperadora>
<epilogo>
<hash>CodigoDoHash</hash>
</epilogo>
</mensagemTISS>


Landerson, adaptei teu código. Ficou assim:

 

 

<?php
if(file_exists("operadora3.xml")){
$xml = simplexml_load_file("operadora3.xml");
foreach($xml->prestadorParaOperadora->loteGuias->guiasTISS->{'guiaSP-SADT'} as $key => $value) {
echo "<p>Número da Ficha: {$value->cabecalhoGuia->numeroGuiaPrestador}</p>";
echo "<p>Código do Procedimento: {$value->procedimentosExecutados->procedimentoExecutado->procedimento->codigoProcedimento}</p>";
}
}else{
print_r("Arquivo XML não encontrado!");
}
?>
resultado:

Número da Ficha: 60000000009

Código do Procedimento: 40000001

//////////////////////////////////*********************************////////////////////

Existem outros códigos de procedimentos da mesma Ficha, mas só aparece o primeiro.


Compartilhar este post


Link para o post
Compartilhar em outros sites

hummm...

tendii

pensei que era algo q estava no editor de texto.

 

 

Senhores, preciso muuuuuuuuuito desse help...mesmo.

Resolvendo isso, resolve-se 95% dos problemas...

 

Ajude a mim quem puder ajudar.

 

abç!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei esse código aqui:

 

 

<?php
$xml = simplexml_load_file('operadora48.xml');
foreach ($xml->prestadorParaOperadora->loteGuias->guiasTISS->{'guiaSP-SADT'} as $arquivo_xml)
{
for ( $j = 0; $j < count( $arquivo_xml ); $j++ ) {
// Imprime o valor o valor da tag <id></id>
echo $arquivo_xml[$j]->cabecalhoGuia->numeroGuiaPrestador . '<br>';
// Imprime o valor o valor da tag <title></title>
echo $arquivo_xml[$j]->procedimentosExecutados->procedimentoExecutado->procedimento->codigoProcedimento . '<br>';
// Apenas uma quebra de linha a mais
echo '<hr>';
}
}
?>
apenas uma tentativa.
sem sucesso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou com XPath?

$dom = new DOMDocument('1.0', 'utf-8');
$dom->load("pacientes.xml");

$xpath = new DOMXPath($dom);

$pacientes = $xpath->query('//guiaSP-SADT');

foreach($pacientes as $item) {
	echo 'Nome Beneficiario: ', $xpath->query('dadosBeneficiario/nomeBeneficiario', $item)->item(0)->nodeValue, '<br>';
	echo 'Registro ANS: ', $xpath->query('cabecalhoGuia/registroANS', $item)->item(0)->nodeValue, '<br>';
	echo 'Numero Guia: ', $xpath->query('cabecalhoGuia/numeroGuiaPrestador', $item)->item(0)->nodeValue, '<br>';
}

Resultado do seu arquivo:

Nome Beneficiario: FULANDO DE TAL
Registro ANS: 309222
Numero Guia: 60000000000005

Compartilhar este post


Link para o post
Compartilhar em outros sites

Po, mano, tentei sim...

mas vou analisar, agora, esse código que vc postou.

 

E coloco aqui o resultado.

 

Mas acho que vc entendeu. É quase isso mesmo,com uma diferença. Veja, ficaria assim o resultado:

 

Numero Guia: 60000000000005

Codigo Procedimento: 4000001

Codigo Procedimento: 4000002

Codigo Procedimento: 4000003

Codigo Procedimento: 4000004

Codigo Procedimento: 4000005

 

De um mesmo número de ficha.

 

É isso que to quebrando a cabeça.

 

Tendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Já tentou com XPath?

$dom = new DOMDocument('1.0', 'utf-8');
$dom->load("pacientes.xml");

$xpath = new DOMXPath($dom);

$pacientes = $xpath->query('//guiaSP-SADT');

foreach($pacientes as $item) {
	echo 'Nome Beneficiario: ', $xpath->query('dadosBeneficiario/nomeBeneficiario', $item)->item(0)->nodeValue, '<br>';
	echo 'Registro ANS: ', $xpath->query('cabecalhoGuia/registroANS', $item)->item(0)->nodeValue, '<br>';
	echo 'Numero Guia: ', $xpath->query('cabecalhoGuia/numeroGuiaPrestador', $item)->item(0)->nodeValue, '<br>';
}

Resultado do seu arquivo:

Nome Beneficiario: FULANDO DE TAL
Registro ANS: 309222
Numero Guia: 60000000000005

O código que vc postou, foi certinho.

Rodou!

 

Como supracitei, o que estou tentando fazer é ler as TAGs <codigoProcedimento> que pertencem a um único Numero Guia.

 

Isso que tá galático!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esqueci de falar, a nível de entendimento, só é exibido o primeiro registro que o loop pega.

Ex:

 

ao invés de aparecer(estou sendo um pouco repetitivo para tentar explicar melhor):

 

 

Codigo Procedimento: 4000001

Codigo Procedimento: 4000002

Codigo Procedimento: 4000003

Codigo Procedimento: 4000004

Codigo Procedimento: 4000005

 

 

Só aparece:

 

Codigo Procedimento: 4000001

 

É aí que complica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por daemon
      Boa tarde,
       
      Duvida simples...
       
      Quando recupero os dados RSS, para inserir no banco de dados esta salvando corretamento porém no mysql esta com (ponto) . na frente de todos os registros via RSS.
       
      Fica com um ponto na frente outro atras...
       
      Data/hora:
      .2024-11-30 10:03:47.
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por Jack Oliveira
      Boa noite galera..
       
      Estou tentando gerar um sitemap com php
       
      So que tenho que por o limit 1200 
       
      mais que isso ele nao gera e se deixar sem limit 
       
      Obs: o banco de dados contem mais de 10 mil registros
      <?php // Data e hora atual $datetime = new DateTime(date('Y-m-d H:i:s')); // A linha abaixo me retornará uma data no seguinte formato: 2017-11-22T00:06:23-02:00 $date = $datetime->format(DateTime::ATOM); // ISO8601 // Gera o arquivo XML do sitemap $xml = '<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> <url> <loc>'.ConfigPainel('site_url').'</loc> <lastmod>'.$date.'</lastmod> <changefreq>weekly</changefreq> <priority>1.00</priority> </url>'; $Query = DBRead('cidades','*',"WHERE status ='1' ORDER BY nome ASC"); if (is_array($Query)) { foreach ($Query as $modcid) { $xml .=' <url> <loc>'.ConfigPainel('site_url').''.$modcid['subdominio'].'/</loc> <lastmod>'.$date.'</lastmod> <changefreq>weekly</changefreq> <priority>1.00</priority> </url>'; //$QueryR = DBRead('directory_guia', '*',"WHERE cidade='{$modcid['id']}' AND status='1' ORDER BY titulo ASC"); $QueryR = DBRead('directory_guia', '*',"WHERE cidade='{$modcid['id']}' AND status='1' ORDER BY titulo ASC LIMIT 1200"); if (is_array($QueryR)) { foreach ($QueryR as $v) { $Queryc = DBRead('cidades', '*',"WHERE id='{$v['cidade']}' ORDER BY nome ASC")[0]; if(empty($v['slug'])) { }else{ $urlseo = ''.ConfigPainel('site_url').''.$Queryc['subdominio'].'/list/'.$v['slug'].'/'; $xml .=' <!-- INICIO DA EMPRESA '.TRIM($v['titulo']).' --> <url> <loc>'.$urlseo.'</loc> <lastmod>'.$date.'</lastmod> <changefreq>weekly</changefreq> <priority>0.85</priority> </url> <!-- FIM DA EMPRESA '.TRIM($v['titulo']).' --> '; } }} }} $xml .= ' </urlset>'; // Abre o arquivo ou tenta cria-lo se ele não exixtir $arquivo = fopen('../sitemap.xml', 'w'); if (fwrite($arquivo, $xml)) { Redireciona('./index.php?sucesso'); } else { Redireciona('?erro'); } fclose($arquivo); // Compactar arquivo sitemap para GZIP $data = implode("", file("sitemap.xml")); $gzdata = gzencode($data, 9); $fp = fopen("sitemap.xml.gz", "w"); fwrite($fp, $gzdata); fclose($fp); // Envia para o Google o novo sitemap gerado $urlSitemap = "http://www.google.com/webmasters/sitemaps/ping?sitemap=".ConfigPainel('site_url').""; // Arquivos a serem enviados $Files = ['sitemap.xml', 'sitemap.xml.gz']; // Envia os dois arquivos sitemap gerados para a URL do Google foreach ($Files as $file) { $url = $urlSitemap . $file; $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); } ?> Caso ouve outra forma que eu possa gerar este sitemap com php fico grato...
    • Por Willian Simione
      Boa Noite, alguem poderia me ajudar em uma situação, estou tetnando gravar os dados da tela abaixo, porem nao estou conseguindo montar o jeito certo pra ele gravar todos os dados de uma vez

    • Por vicente386
      Ola. Tenho uma tabela no 3 campos que sao "LIVRO, POS, PAGINA" ao qual a logica e a seguinte: cada livro tem 100 paginas cada pagina tem 30 posiçoes tenho 8,364 registros pra inserir chegando a 100 paginas com 30 posiçoes cada passa para o livro 2 e como fazer o update na tabela inserindo nos campos LIVRO = 1, POS de 0 a 30 e PAGINA 1 para cada 30 registros logos apos pagina 2 ?
      estou tentando fazer assim:
      <?php > ini_set('max_execution_time', 2000); $pdo = new > DO(DB_SERVER.":host=".DB_HOST.";dbname=".DB_BASE,DB_USER,DB_PASSWORD); > $sql = $pdo->prepare("SELECT count(*) FROM tabela2018"); > $sql->execute(); > $livro = 1; > foreach($sql as $obj){ > $variavel = $obj[0]; > ceil((float)$variavel/100); > $qtdlaco = ceil((float)$variavel/100); > for ($id = 1; $id <= 35; $id++) { > for($L=1; $L < $qtdlaco; $L++) { > for ($P = 0; $P <= 30; $P++) { > $sql = $pdo->prepare("UPDATE tabela2018 SET LIVRO = :LIVRO, POS = :POS, PAGINA = :PAGINA WHERE idtabela2018 = $id"); > $sql->bindValue(':LIVRO', $livro); > $sql->bindValue(':POS', $P); > $sql->bindValue(':PAGINA', $L); > $sql->execute(); > } > } > } >} ?> mas na tebela so aparece: LIVRO POS PAGINA 1 30 83 1 30 83 1 30 83 e nao como deveria : LIVRO POS PAGINA 1 0 1 1 1 1 1 2 1
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.