Ir para conteúdo
führ

ler e importar txt zipado

Recommended Posts

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

 

/////////////////////////////////////////
$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);
	  }
      

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Lenon John
      Eu preciso inserir mais de 3000 itens no ArrayList, o que gera o erro: method code too large.
      Acredito que usando um TXT como "BANCO DE DADOS" vai resolver o meu problema.
       
      Atualmente eu faço assim:
      -----------------------------------------------------
      ArrayList lista = new ArrayList();

      // inserindo os itens no ArrayList
      lista.add(new produtoItem(R.drawable.imagem, "AA", "AA", "AA", "AA"));

      adapter = new produtoAdapter(this, lista);
      ListView listView = (ListView) findViewById(R.id.listView1);
      listView.setAdapter(adapter);
      -----------------------------------------------------
       
      Como pegar os dados de um TXT e inserir no meu arrayList?

      OBS: Esse APP precisa funcionar sem a necessidade de internet. Ou seja, não posso usar um banco dados externo.
    • Por avelar.avelar
      Galera, estou tentando pegar de um arquivo TXT, 4 informacoes que cada linha dele da e gravar numa tabela do banco de dados, e esta dando erro e já mexi e remexi e não sei pq nao da certo, alguem poderias me ajudar?

      processa.php
      <?php
      session_start();
      //Incluir a conexao com BD
      include_once("conexao.php");
      //Receber os dados do formulário
      //$arquivo = $_FILES['arquivo'];
      //var_dump($arquivo);
      $arquivo_tmp = $_FILES['arquivo']['tmp_name'];
      //ler todo o arquivo para um array
      $dados = file($arquivo_tmp);
      //var_dump($dados);
                          $line = fgets($dados);
                         for($x=0; $x<0; $x++) {
                              $line = fgets($dados);
                          }
                          $ArrayRetornogru = array();
                          echo "dados".$dados;
                          echo "line". $line;
                          break;
                          
                          
                          while ($line = fgets($dados)) {
                                      
                                  $data_vencto = substr($line, 56,8);
                                  $data_pago = substr($line, 101,8);
                                  $valor          = substr($line, 122,4);
                                  $cpf  = substr($line, 256,11);
                                  // captar as 3 variaveis e fazer a busca das inscricoes pelo cpf data e valor
                                  echo $data_pago;
                                  echo $data_vencto;
                                  echo $valor;
                              $nbr_cpf = $cpf;
                              $parte_um     = substr($nbr_cpf, 0, 3);
                              $parte_dois   = substr($nbr_cpf, 3, 3);
                              $parte_tres   = substr($nbr_cpf, 6, 3);
                              $parte_quatro = substr($nbr_cpf, 9, 2);
                              $monta_cpf = "$parte_um.$parte_dois.$parte_tres-$parte_quatro";
                              echo $monta_cpf;
                               $ArrayRetornogru[] = $monta_cpf;
                                   
                                      echo "<pre>";
                                          print_r($ArrayRetornogru);
                                      echo "</pre>";
                                      echo "TESTE";
                                      
                          }
                          fclose($dados);
                          print_r($ArrayRetornogru);
                          echo "teste 2";
                          break;
                          
                          
      foreach($dados as $linha){
          $linha = trim($linha);
          $valor = explode(',', $linha);
          var_dump($valor);
          
          $data_vencto = $ArrayRetornogru[0];
          $data_pago = $ArrayRetornogru[1];
          $valor = $ArrayRetornogru[2];
          $cpf = $ArrayRetornogru[3];
          
          $result_usuario = "INSERT INTO gru_concurso (data_vencto, data_pago, valor, cpf) VALUES ('$data_vencto', '$data_pago', '$valor', '$cpf')";
          
          $resultado_usuario = mysqli_query($conn, $result_usuario);    
      }
      $_SESSION['msg'] = "<p style='color: green;'>Carregado os dados com sucesso!</p>";
      header("Location: index.php");
       
      ARQUIVO TXT:
       

       
      de cada linha eu preciso tirar as informacoes datavencto, datapago, valor, cpf e gravar numa tabela a parte.
       
      Falow galera !!!
       
       
       
    • Por Hozana
      Ola, bom dia!!
      pessoal preciso de ajuda!
       
      tenho a seguinte lista criada no html, ela não esta completa, só p vcs entenderem.
       
      <ul class="lista">                                            
                              <li>Datetime:</li>
                              <li>Velocidade:</li> 
                              <li>$ Inicial:</li> 
                              <li>$ Atual: </li>
                              <li>$ Financ: </li>
                              <li>% Neil: </li> 
                              <li>% Financ: </li> 
                              <li>% Ultimo: </li> 
                              <li>Estado: </li> 
                              <li>QDT Trade: </li> 
       
      e tenho no JS isso( peguei em um tutorial, e acho que é disso que eu preciso
       
      var numsList = [];
      $.ajax( 'Input.txt', {
          dataType: 'text',
          success: function(response){
              //response é o conteudo do Input.txt
              var lines = response.split('\n'); //quebra o arquivo em linhas, 
              for(var i in lines){
                  var row = lines;
                  var nums = row.split(','); //quebra a linha em valores separdos por virgula
                  for(var j in nums){
                      var num = parseInt(nums[j]); //converte o valor para int
                      if( !isNaN(num) ) //basicamente verifica se é um numero
                          numsList.push(num); //adiciona o item no array
                  }}
              console.log(numsList);
          }
      });
       
      Tenho também um arquivo txt(Input.txt) com algumas informações separadas por virgula.
      O que quero é alimentar a lista com as informações do arquivo txt, mas coloca-los na posição correta
       
      por exemplo
      eu Tenho o 1º item da lista Datatime:  e dentro dele quero colocar o primeiro item do arquivo
      mas não sei como chamar o JS  no HTML.
       
       
      Desde ja Obrigada.
    • Por jhops
      Olá, estou começando na programação e queria a ajuda de voces.
      Estou com um desafio no curso para criar um projeto no visual studio para editar um txt usando o openfiledialog para buscar o arquivo, o caminho apareceria no txtbox  e teria um botão que ao clicar pegasse na linha 1 as colunas de 18 à 32 e alteraria para um numero fixo (ex: 123456789000000).
      Segue o print do formulario para melhor entendimento do projeto.
       
      Aguem pode me ajudar?

    • Por empirerock
      Boa tarde.
       
      Estou aprendendo a manipular arquivos txt com o PHP.
       
      Minha dúvida é a seguinte.
       
      Como faço para localizar em qual LINHA se encontra uma palavra específica?
       
      Agradeço muito quem puder me ajudar.
×

Informação importante

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