Jump to content
gereiz

[Resolvido] Erro ao Importar XML

Recommended Posts

Boa noite!

 

Estou tendo problemas em importar um arquivo xml para o mysql pelo PHP.

 

O xml é este abaixo:

<PRODUTO2>
    <DADOS>
        <CHAVE>
            <COD_PRODUTO>131</COD_PRODUTO>
        </CHAVE>
        <CADASTRO>
            <NOME>TETRAMED 500MG C/100 CAPS(25X04)-MEDQUIMICA</NOME>
            <EAN13>7896862970031</EAN13>
            <GEN>TETRACICLINA</GEN>
            <FORN>113</FORN>
            <ATIVO>S</ATIVO>
            <TIPO>99</TIPO>
            <PRECO>16.95</PRECO>
            <REFERENCIA>TETREX</REFERENCIA>
            <CAIXA>50</CAIXA>
            <DT>17-10-2018 11:55:19</DT>
            <PRZ_MEDIO_MAX>-1</PRZ_MEDIO_MAX>
        </CADASTRO>
    </DADOS>

E meu código php é esse:

/* PEGA O ARQUIVO XML */
        $caminhoDoXML = "C:/xampp/htdocs/cota/xml/Distriam/ServCli/Receber/tudo/PRODUTO2.XML";
        $xml = simplexml_load_file($caminhoDoXML) or die("Erro, não consegui achar o XML");
 
$x = 0;

foreach ($xml->children() as $DADOS) {                
                
                
foreach ($DADOS as $row) {
    $COD_PRODUTO = $row -> CHAVE->COD_PRODUTO;
    $NOME = $row -> NOME;
    $EAN13 = $row -> EAN13;
    $PRECO = $row -> PRECO;
    
        if(mysqli_affected_rows($conn) != -1){
       $x++;
    }
}

$sql = "INSERT INTO produtos01 (COD_PRODUTO, NOME, EAN13, PRECO) 
                    VALUES 
                ('$COD_PRODUTO', '$NOME', '$EAN13', '$PRECO')";


$result = mysqli_query($conn,$sql);
if (!$result) {
    echo 'Erro do Mysql';
} else {
        echo 'Importado com sucesso<BR>';
    
}
}

O problema é que o php insere no banco de dados os valores dentro da tag <CADASTRO> (NOME, EAN13 e PRECO) corretamente, mas os valores da tag <CHAVE>  (COD_PRODUTO) não, todas as linhas aparecem com o valor 0. Por favor, ajudem, pois o COD_PRODUTO Será justamente minha chave estrangeira para minhas views. Quando tento importar o arquivo CSV via Workbench, consigo normalmente, porem o xml com PHP não. 

Edited by Gabriel Heming
adicionar formatação de código

Share this post


Link to post
Share on other sites

Você está iterando sobre o XML de forma errada. Veja o seguinte código: https://3v4l.org/nTq7s

 

Quando você executa o seguinte código:

foreach ($DADOS as $row) {

Ele itera duas vezes, a primeira utilizando os dados do node CHAVE a segunda utilizando os valores de CADASTRO. Percebeu que para recuperar o valor de NOME, EAN13, etc..., você não precisa utilizar o node CADASTRO, mas está usando o node CHAVE que fica no mesmo nível?

 

Você pode resolver o seu problema removendo o foreach acima e utilizando diretamente os nodes que desejas recuperar:

foreach ($xml->children() as $DADOS) {
    echo $DADOS->CHAVE->COD_PRODUTO;
    echo $DADOS->CADASTRO->NOME;
    echo $DADOS->CADASTRO->EAN13;
    echo $DADOS->CADASTRO->PRECO;
}

Saída:

Citar

131

TETRAMED 500MG C/100 CAPS(25X04)-MEDQUIMICA

7896862970031

16.95

 

Veja o código em funcionamento: https://3v4l.org/CS2Sb

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Webster Moitinho
      Estou usando switch em minha página PHP, e para um dos cases está aparecendo o erro abaixo que eu não consigo identificar
       
      <Error><Code>BlobNotFound</Code><Message>The specified blob does not exist. RequestId:00c4ed11-e01e-0068-2b3a-575edd000000 Time:2019-08-20T09:33:50.2842035Z</Message></Error> Esse case chama o seguinte conteúdo do banco de dados:
      <p align="justify">Ao capacitar o seu <em>staff</em> de maneira satisfat&oacute;ria, a empresa assegura a qualidade do produto final ao cliente, influenciando de maneira significativa os resultados. Atrav&eacute;s da implanta&ccedil;&atilde;o de programas sistem&aacute;ticos de treinamento, pode-se proporcionar a melhoria do produto, al&eacute;m de serem dotados de forte apelo motivacional para a equipe, promovendo o desenvolvimento profissional espont&acirc;nea e naturalmente. &Eacute; comum nas corpora&ccedil;&otilde;es que o colaborador, ap&oacute;s algum tempo de capacita&ccedil;&atilde;o, busque melhores oportunidades no mercado, fazendo com que o empres&aacute;rio perca seu investimento. Todavia, n&atilde;o capacitar tamb&eacute;m tem o seu custo. E &eacute; bastante alto. Da&iacute; a import&acirc;ncia da forma&ccedil;&atilde;o continuada nas empresas, promovendo constantes atualiza&ccedil;&otilde;es e reciclagens dos profissionais.</p> <p align="justify"> <h4 style="text-align:left">Quanto custa n&atilde;o capacitar </h4> <ul style="margin-left: 5px;text-align:left; line-height: 35px; font-family: padrao;"> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Atendimento incompleto ou n&atilde;o compat&iacute;vel com a expectativa da empresa e do cliente.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Perda de neg&oacute;cios.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Insatisfa&ccedil;&atilde;o de clientes.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Redu&ccedil;&atilde;o do valor da marca.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;N&atilde;o cumprimento de metas.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Alto &iacute;ndice de <em>turnover</em>.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Insatisfa&ccedil;&atilde;o do funcion&aacute;rio.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Custos com retrabalho.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Sobrecarga de alguns funcion&aacute;rios (via de regra, aqueles melhores preparados).</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Redu&ccedil;&atilde;o da lucratividade.</li> <li style="font-size:12pt;" ><i class="fa fa-frown fa-fw" style="font-size:18pt; color: #FF0000;"></i> &nbsp;&nbsp;Redu&ccedil;&atilde;o de faturamento.</li> </ul> <h4 style="text-align:left">O que o mercado est&aacute; fazendo para melhorar na gest&atilde;o e formar seus profissionais?</h4> <p style="text-align:left">Segundo estudos realizados pelo <a href="http://www.vistage.com.br/grupos-vistage" title="V&aacute; para o site" target="_blank" class="zloko">Grupo Vistage Brasil</a>:</p> <ul style="margin-left: 5px;text-align:left; line-height: 35px; font-family: padrao;"> <li style="font-size:12pt;" ><i class="fa fa-user-graduate fa-fw" style="font-size:18pt; color: #009900;"></i> &nbsp;&nbsp;Apenas 14&#37; dos executivos brasileiros n&atilde;o tem problemas ao buscar profissionais qualificados.</li> <li style="font-size:12pt;" ><i class="fa fa-user-graduate fa-fw" style="font-size:18pt; color: #009900;"></i> &nbsp;&nbsp;H&aacute; falta de m&atilde;o de obra qualificada para todos os n&iacute;veis de fun&ccedil;&atilde;o.</li> <li style="font-size:12pt;" ><i class="fa fa-user-graduate fa-fw" style="font-size:18pt; color: #009900;"></i> &nbsp;&nbsp;As maiores demandas s&atilde;o para profissionais com forma&ccedil;&atilde;o superior para a &aacute;rea de atua&ccedil;&atilde;o da empresa (65%) e forma&ccedil;&atilde;o t&eacute;cnica (60%).</li> </ul> </p> <p align="justify">Uma pesquisa do Jornal Bom Dia Brasil mostrou onde est&aacute; o emprego nas m&eacute;dias e grandes empresas. S&atilde;o setores onde sobram vagas porque falta qualifica&ccedil;&atilde;o e &aacute;reas onde o curso t&eacute;cnico j&aacute; garante a contrata&ccedil;&atilde;o. O curso t&eacute;cnico &eacute; suficiente para abrir as portas de entrada no mercado de trabalho.<br /> Entre as ind&uacute;strias pesquisadas, 65% reclamam da falta de m&atilde;o de obra especializada. As m&eacute;dias e grandes empresas procuram operadores.</p> <p align="justify">Exatamente o caso dessa empresa de automa&ccedil;&atilde;o de port&otilde;es em Bras&iacute;lia. &ldquo;A gente perde com nossa produtividade. A gente n&atilde;o consegue inovar com frequencia porque as pessoas n&atilde;o conseguem acompanhar essa demanda&rdquo;, afirma a gerente de RH Clara Moreira. <p style="text-align:justify;">A sa&iacute;da das empresas tem sido treinar os empregados: 81% fizeram investimentos em cursos dentro da pr&oacute;pria empresa. O que tamb&eacute;m n&atilde;o &eacute; f&aacute;cil, porque a maioria chega despreparada.</p> <h4 style="text-align:left;">Áreas dos cursos Gopinatha</h4> <br /> <div style="float:left; width:100%;"> <img src="images/colmeia.png" id="map-image" style="width: 480px; max-width: 100%; height: auto;" alt="" usemap="#cursos" /> <map name="cursos"> <area href="detalhe.php?id=200&gr=desh" alt="Desenvolvimento Humano" title="Desenvolvimento Humano" shape="poly" coords="176, 351, 258, 300, 345, 345, 348, 448, 262, 498, 184, 442" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('map-image').src= 'images/cdes.png';" onmouseout="if(document.images) document.getElementById('map-image').src= 'images/colmeia.png';" /> <area href="detalhe.php?id=200&gr=info" alt="Informática" title="Informática" shape="poly" coords="431, 199, 517, 149, 599, 199, 598, 306, 514, 350, 431, 301" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('map-image').src= 'images/cinf.png';" onmouseout="if(document.images) document.getElementById('map-image').src= 'images/colmeia.png';" /> <area href="detalhe.php?id=200&gr=gestao" alt="Gestão Avançada" title="Gestão Avançada" shape="poly" coords="262, 197, 347, 150, 430, 200, 430, 300, 344, 345, 258, 300" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('map-image').src= 'images/cgest.png';" onmouseout="if(document.images) document.getElementById('map-image').src= 'images/colmeia.png';" /> <area href="detalhe.php?id=200&gr=contabil" alt="Contabilidade e Tributos" title="Contabilidade e Tributos" shape="poly" coords="90, 202, 178, 153, 262, 199, 260, 302, 177, 352, 92, 299" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('map-image').src= 'images/ccont.png';" onmouseout="if(document.images) document.getElementById('map-image').src= 'images/colmeia.png';" /> <area href="detalhe.php?id=200&gr=seguranca" alt="Segurança da Informação" title="Segurança da Informação" shape="poly" coords="345, 54, 428, 0, 515, 54, 516, 150, 430, 201, 345, 151" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('map-image').src= 'images/cseg.png';" onmouseout="if(document.images) document.getElementById('map-image').src= 'images/colmeia.png';" /> <area href="detalhe.php?id=201&gr=sistemas&ant=32" alt="Sistemas de Informação" title="Sistemas de Informação" shape="poly" coords="174, 49, 259, 1, 347, 56, 346, 152, 261, 199, 178, 153" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('map-image').src= 'images/csist.png';" onmouseout="if(document.images) document.getElementById('map-image').src= 'images/colmeia.png';" /> <area href="detalhe.php?id=200&gr=coaching" alt="Coaching" title="Coaching" shape="poly" coords="6, 49, 91, 2, 176, 50, 178, 153, 89, 202, 4, 146" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('map-image').src= 'images/ccoach.png';" onmouseout="if(document.images) document.getElementById('map-image').src= 'images/colmeia.png';" /> </map> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/image-map-resizer/1.0.10/js/imageMapResizer.js"></script> <script>$(document).ready(function(e){$("map").imageMapResize();});</script> </div>  
    • By DinhoPHP
      Olá!
      Alguém pode me dar uma luz sobre fazer um ORDER BY, hora ASC ou hora DESC? Por favor! Estou utilizando PHP e JS no projeto.
       
      $pegadados = $pdo->prepare("SELECT * FROM produtos WHERE categoria LIKE '%$dataSearch%' OR marca LIKE '%$dataSearch%' OR produto LIKE '%$dataSearch%' OR modelo LIKE '%$dataSearch%' OR descricao LIKE '%$dataSearch%' ORDER BY $filter $filter2");
    • By DinhoPHP
      Olá!
      Alguém pode me dar uma luz sobre fazer um ORDER BY, hora ASC ou hora DESC? Por favor! Estou utilizando PHP e JS no projeto.
       
      $pegadados = $pdo->prepare("SELECT * FROM produtos WHERE categoria LIKE '%$dataSearch%' OR marca LIKE '%$dataSearch%' OR produto LIKE '%$dataSearch%' OR modelo LIKE '%$dataSearch%' OR descricao LIKE '%$dataSearch%' ORDER BY $filter $filter2");
    • By eduardodsilvaq
      function efetuarLogin ($x, $y) { $connect = db_connect(); $queryl = $connect->query("SELECT * FROM usuarios WHERE login = ". $x ." AND senha = " . $y . " "); if ($queryl->rowCount() == 0) { echo $x; echo $y; echo "<script>alert('Dados de Login incorretos.'); history.back();</script>"; exit; } else { setcookie("login",$x); header("Location:index.php"); exit; } } Esse código tem algum erro nessa linha:
      $queryl = $connect->query("SELECT * FROM usuarios WHERE login = ". $x ." AND senha = " . $y . " "); Nao consigo validar o login mesmo que os dados estejam corretos. Alguém da uma ajuda? 
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.