30% OFF para compra e renovaÇÃo. Comprar agora

Autor Tópico: ler e importar txt zipado  (Lida 542 vezes)

inaciofuhr

  • Novato
  • *
  • Mensagens: 34
    • Email
ler e importar txt zipado
« Online: Fevereiro 12, 2018, 11:06:11 pm »
Olá
tenho uma aplicação de controle onde envio o arquivo txt zipado para leitura e insert no bd, acontece q não estou conseguindo inserir todos as linhas do arquivo, gravando somente uma (a primeira), não consigo ver onde estou errando.
Adaptei de uma aplicação onde importo um txt, ignorando o cabeçalho e linhas em branco se existirem, isto também não estou conseguindo no arquivo zipado,
Se puderem me ajudar, agradeço.
segue código
Código: [Selecionar]
/////////////////////////////////////////
$pathFile     =  $this->Ini->path_doc . "/" . {arquivo};

$zip = zip_open($pathFile);

if ($zip)
  {
  while ($zip_entry = zip_read($zip))
    {
    echo "<p>";
    echo "Name: " . zip_entry_name($zip_entry) . "<br />";

    if (zip_entry_open($zip, $zip_entry))
      {
      $contents = zip_entry_read($zip_entry);
      echo "File Contents:<br/>";
      echo $contents;
     
      //if(strlen(trim($zip_entry)) >= 0) {
     
      $dados = explode(";", $contents, 1028);
   
      $campo1 = str_replace("'","",$dados[0]); //RETIRA O ' DA COLUNA
      $campo2 = str_replace("'","",$dados[1]);
      $campo3 = str_replace("'","",$dados[2]);
      $campo4 = str_replace("'","",$dados[3]);
      $campo5 = str_replace("'","",$dados[4]);
      $campo6 = str_replace("'","",$dados[5]);
      $campo7 = str_replace("'","",$dados[6]);
      $campo8 = str_replace("'","",$dados[7]);
      $campo9 = str_replace("'","",$dados[8]);
      $campo10 = str_replace("'","",$dados[9]);
      $campo11 = str_replace("'","",$dados[10]);
      $campo12 = str_replace("'","",$dados[11]);
      $campo13 = str_replace("'","",$dados[12]);
      $campo14 = str_replace("'","",$dados[13]);
      $campo15 = str_replace("'","",$dados[14]);
      $campo16 = str_replace("'","",$dados[15]);
      $campo17 = str_replace("'","",$dados[16]);
      $campo18 = str_replace("'","",$dados[17]);
      $campo19 = str_replace("'","",$dados[18]);
         $data = $campo9;
$dia = substr($data, 0, 2);
$mes = substr($data, 3, 2);
$ano = substr($data, 6, 4);
$campo9_gravar = $ano."-".$mes."-".$dia;
     
   $valor_bruto = floatval(str_replace(',', '.', str_replace('.', '', $campo6)));
   $total_nfe = floatval(str_replace(',', '.', str_replace('.', '', $campo17)));
   $quantidade = floatval(str_replace(',', '.', str_replace('.', '', $campo4)));
   
   echo
   $inserir = sc_exec_sql("INSERT into anual(ncm, descricao, cfop, quantidade, unidade, valor_bruto, opracao_nfe, situacao_nfe, data_nfe, ie_emitente, uf_emitente, ie_destinatario, uf_destino, modelo_df, serie_nfe, nfe, total_nfe, situacao_aim, chave_acesso, ano, cliente_id, ncm2, data_lancamento) VALUES ('$campo1', '$campo2', '$campo3', '$quantidade', '$campo5',  '$valor_bruto',  '$campo7',  '$campo8',  '$campo9_gravar',  '$campo10',  '$campo11',  '$campo12',  '$campo13',  '$campo14',  '$campo15',  '$campo16',  '$total_nfe',  '$campo18',  '$campo19','{ano}',
   '{cliente}','$campo1', '{data_lancamento}')"); //INSERE CADA LINHA

         } // FECHA REMOÇÃO DA LINHA EM BRANCO
      //}
     
     
     
      zip_entry_close($zip_entry);
     }
     
« Última modificação: Fevereiro 12, 2018, 11:17:38 pm por inaciofuhr »

inaciofuhr

  • Novato
  • *
  • Mensagens: 34
    • Email
Re:ler e importar txt zipado
« Responder #1 Online: Fevereiro 13, 2018, 08:26:39 am »
olá novamente está exibindo na tela todos os dados do arquivo conforme  echo $contents;, apresenta na tela a mensagem de sucesso conforme codigo q implementei
if($inserir == true){
      echo"Sucesso";}
   else{
      echo"Erro";}
}
 mas no banco de dados só insere a primeira linha do arquivo
aguardo ajuda

jorgepopel

  • Expert
  • *****
  • Mensagens: 755
    • iCentro Tecnologia e Sistemas
    • Email
Re:ler e importar txt zipado
« Responder #2 Online: Fevereiro 14, 2018, 10:53:33 am »
Pelo que entendo, vc deve colocar um laço para movimentar o processamento entre as linhas lidas.

inaciofuhr

  • Novato
  • *
  • Mensagens: 34
    • Email
Re:ler e importar txt zipado
« Responder #3 Online: Fevereiro 14, 2018, 12:06:12 pm »
Jorge
no codigo q postei não tem o laço, mas tentei e não consegui,  com o for continuou inserindo só um, com while ficou infinito. Como sou iniciante me perdi no código. Não sei se while do zip (no inicio do código) esteja influenciando.
« Última modificação: Fevereiro 14, 2018, 12:08:19 pm por inaciofuhr »