Ir para conteúdo
Fórum Script Brasil
  • 0

Gerar apenas um cabeçalho e Tabela com PHP usando Foreach


GabrieldaBahia

Pergunta

Olá Boa Noite, estou trabalhando em uma aplicação simples que faz a leitura de arquivos XML, pego os dados faço o processamento e depois mostro na tela os dados que quero dos XML, toda via estou mostrando em uma tabela e o cabeçalho está se repentindo devido está dentro do foreache, se eu tirar a tabela do foreach não mostra os dados, alguém sabe como mostrar apenas o cabecalho e apenas os dados se repetirem ?

Vou deixar a imagem de como a tabela e mostrada e uma parte do codigo 

<?php

error_reporting(0);
ini_set(“display_errors”, 0 );

//Instanciando o OBJ
$xml = new DOMdocument();

//Pegando o TMP do FORM
$arquivo = $_FILES['entXML']['tmp_name'];

    //Total de todos os XML
      $totArquivos = 0;
    
      $arquivos = $arquivo;

//Navegando no Nodes(Nós)
foreach( $arquivos as$arquivos){

 //Carregando o XML
 $xml ->load($arquivos) or die(" ");
  //Entra dentro do NÓ pai do XML
  $arquivos = $xml->getElementsByTagName( "nfeProc" );

    //Pega Nome
      $nomes = $xml->getElementsByTagName( "xNome" );
      $nome = $nomes->item(0)->nodeValue;
    //Pega CNPJ
      $cnpjS = $xml->getElementsByTagName( "CNPJ" );
      $cnpj = $cnpjS->item(0)->nodeValue;

    //Mostra dados do Emitente
      echo"<header class='text-center'>";
          echo"<div class='col-sm-6 Dempresa'><b>Empresa(Razão):</b> <p>$nome</p></div>";
          echo"<div class='col-sm-4 Dempresa'><b>Cnpj:</b> <p>$cnpj</p></div>";
          
      echo"</header>";     
      
        break;  
        }  

          //RECURSO DESESPERADO02 kk
          $arquivo = $arquivo;
                    
//RODANDO TODOS OS ENDEREÇOS DOS ARQUIVOS
for($i = 0; $i < count($arquivo);$i++ ){

        $totArquivos +=count($arquivo); //Total dos arquivos Carregados  

    //Entra dentro do NODE "ide"
foreach( $arquivo as $arquivo[$i]){        
  
          //Carregando o XML
        $xml ->load($arquivo[$i]) or die(" ");
          //Entra dentro do NÓ pai do XML
        $arquivo[$i] = $xml->getElementsByTagName( "nfeProc" );
    
  //Pega Data de Emissão da NF
      $chaveS = $xml->getElementsByTagName("infNFe");
      $chave =  $chaveS->item(0)->getAttribute("Id");
  //Pega Data de Emissão da NF                            
      $dataEMS = $xml->getElementsByTagName( "dhEmi" );
      $dataEmi = $dataEMS->item(0)->nodeValue;
  //Pega CFOP                           
      $cfopS = $xml->getElementsByTagName( "CFOP" );
      $cfop = $cfopS->item(0)->nodeValue;
  //Pega Modelo                                    
      $modeloS= $xml->getElementsByTagName( "mod" );
      $modelo = $modeloS->item(0)->nodeValue;
//Mostra Tabela na Tela
      echo "<table  class='table table-striped  table-bordered table-hover table-sm'>";          
              echo"<thead class='thead-light'>";
                echo "<tr>";
                  echo "<th scope='row'>CHAVE DE ACESSO</th>" ;
                  echo "<th class='text-center meu'>Data Emissão</th>" ;
                  echo "<th class='text-center'>CFOP</th>" ;
                  echo "<th>Valor</th>" ;
                  echo "<th>Modelo</th>" ;
                  echo "<th>Status</th>" ;
                echo "</tr>";
          echo'</thead>';
          

          echo"<tr>";
              echo"<td>$chave</td>";
              echo"<td class='text-center'>".date('d/m/y',strtotime($dataEmi))."</td>";//formato de data brasileiro
              echo"<td class='text-center'>$cfop</td>";
              echo"<td>".number_format($vaPag, 2)."</td>";//Formato moeda com 2 casas(Americano)
              echo"<td  class='text-center'><b>$modelo<b> </td>";
              echo"<td>$motivo </td>";                  
          echo"</tr>";     

      echo "</table>";       

 

Modelo-TaBela.png

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 1

Você não precisa de todos esses loops apenas um, simplifica o código

<?php
//Deixa pra exibir os erros enquanto você estiver desenvolvendo, depois em produção você volta pra não exibir erros
error_reporting(E_ALL);
ini_set(“display_errors”,true);

//Instanciando o OBJ
$xml = new DOMdocument();

//Pegando o TMP do FORM
$arquivos = $_FILES['entXML']['tmp_name'];

//Total dos arquivos Carregados 
$totArquivos = count($arquivos); 

//Carregando o XML
$xml->load($arquivos[0]) or die(" ");
//Entra dentro do NÓ pai do XML
$arquivo = $xml->getElementsByTagName( "nfeProc" );

//Pega Nome
$nomes = $xml->getElementsByTagName( "xNome" );
$nome = $nomes->item(0)->nodeValue;
//Pega CNPJ
$cnpjS = $xml->getElementsByTagName( "CNPJ" );
$cnpj = $cnpjS->item(0)->nodeValue;

//Mostra dados do Emitente
echo"<header class='text-center'>";
echo"<div class='col-sm-6 Dempresa'><b>Empresa(Razão):</b> <p>$nome</p></div>";
echo"<div class='col-sm-4 Dempresa'><b>Cnpj:</b> <p>$cnpj</p></div>";

echo"</header>";

//Mostra Tabela na Tela
echo "<table  class='table table-striped  table-bordered table-hover table-sm'>";          
echo"<thead class='thead-light'>";
echo "<tr>";
echo "<th scope='row'>CHAVE DE ACESSO</th>" ;
echo "<th class='text-center meu'>Data Emissão</th>" ;
echo "<th class='text-center'>CFOP</th>" ;
echo "<th>Valor</th>" ;
echo "<th>Modelo</th>" ;
echo "<th>Status</th>" ;
echo "</tr>";
echo'</thead>';
 
//Navegando no Nodes(Nós)
foreach($arquivos as $arquivo) {        

	//Carregando o XML
	$xml ->load($arquivo) or die(" ");
	//Entra dentro do NÓ pai do XML
	$arquivo = $xml->getElementsByTagName( "nfeProc" );

	//Pega Data de Emissão da NF
	$chaveS = $xml->getElementsByTagName("infNFe");
	$chave =  $chaveS->item(0)->getAttribute("Id");
	//Pega Data de Emissão da NF                            
	$dataEMS = $xml->getElementsByTagName( "dhEmi" );
	$dataEmi = $dataEMS->item(0)->nodeValue;
	//Pega CFOP                           
	$cfopS = $xml->getElementsByTagName( "CFOP" );
	$cfop = $cfopS->item(0)->nodeValue;
	//Pega Modelo                                    
	$modeloS= $xml->getElementsByTagName( "mod" );
	$modelo = $modeloS->item(0)->nodeValue;


	//Mostra Linhas na Tela
	echo"<tr>";
	echo"<td>$chave</td>";
	echo"<td class='text-center'>".date('d/m/y',strtotime($dataEmi))."</td>";//formato de data brasileiro
	echo"<td class='text-center'>$cfop</td>";
	echo"<td>".number_format($vaPag, 2)."</td>";//Formato moeda com 2 casas(Americano)
	echo"<td  class='text-center'><b>$modelo<b> </td>";
	echo"<td>$motivo </td>";                  
	echo"</tr>";     

}
// Fecha Tabela
echo "</table>";

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...