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

Eu gostei do ZipArchive


Frank K Hosaka

Pergunta

Com a ajuda da Gemini, fiquei sabendo que o PHP trabalha com o arquivo zipado. Graças a esse recurso, não preciso mais extrair um arquivo zipado e depois mandar centenas de arquivos numa pasta reservada para o PHP.

arquivo index.php
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<form method=post class="w-50 m-auto" enctype="multipart/form-data">
    <label for=arquivo>Escolha o arquivo Zipado</label>
    <input type=file name=arquivo>
    <input type=submit>
</form>
<?php
if(!isset($_FILES['arquivo']))
{
    exit;
}
if($_FILES['arquivo']['error'])
{
    echo "O arquivo " . $_FILES['arquivo']['name'] . " tem problemas";
    exit;
}
$zip=new ZipArchive();
$zip->open($_FILES['arquivo']['tmp_name']);
$contaArquivos = $zip->count();
$notasFiscais = [];
$somaTotal = 0;
for($i=0;$i<$contaArquivos;$i++)
{
    $nfce=$zip->getFromIndex($i);
    $dom=new DOMDocument();
    $dom->loadXML($nfce);
    $nfe=$dom->documentElement;
    $notasFiscais[]=$nfe->getElementsByTagName('nNF')->item(0)->textContent;
    $somaTotal+=$nfe->getElementsByTagName('vNF')->item(0)->textContent;

}
sort($notasFiscais);
$primeiraNota=intval($notasFiscais[0]);
$ultimaNota=intval($notasFiscais[$contaArquivos-1]); ?>
<table class="table table-striped w-50 m-auto">
    <tr><td>Número de arquivos xml<td class=text-end><?=$contaArquivos?>
    <tr><td>Total das Notas Fiscais<td class=text-end><?=number_format($somaTotal,2,',','.')?>
    <tr><td>Primeira Nota<td class=text-end><?=$primeiraNota?>
    <tr><td>Última Nota<td class=text-end><?=$ultimaNota?>
    <tr><td>Notas Faltantes<td class=text-end><?=$ultimaNota-$primeiraNota+1-$contaArquivos?>
    <?php
    for($i=$primeiraNota;$i<=$ultimaNota;$i++)
    {
        if(!in_array($i,$notasFiscais))
        {
        ?> <tr><td><?=$i?> <?php
        }
    }
    ?>
</table>

 

Captura de tela 2024-06-14 074004.png

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...