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 manolegal
      Olá amigos
      Estou tentando importar um arquivo txt, porém preciso excluir o cabeçalho, iniciando a importação dos dados pela segunda linha:
      Tentei da seguinte forma, porém não deu certo:
      $arquivo = fopen($pathFile, 'r'); if ($arquivo == false) die('Não foi possível abrir o arquivo.'); $tot_linha = count($arquivo); $i=1; while(!feof($arquivo)) { $tot_linha = count($arquivo); for($i=1; $i<$tot_linha; $i++){ $linha = fgets($arquivo); $dados = explode(";",$linha); $campo1 = $dados[0]; $campo2 = $dados[1]; $campo3 = $dados[2]; $teste = sc_exec_sql("INSERT into minha_tabela(meus_dados) VALUES ('$campo1',..........."); } $i++; } if($teste == true){ echo"Sucesso";} else{ echo"Erro";} fclose($arquivo); Desde já agradeço.
    • Por Mi7chael
      Olá pessoal.
      Estou com uma dúvida lógica, que não consigo resolver.
      Tenho um aplicativo rodando em webview, portanto, usando html/javascript.
      Quero de alguma forma armazenar preferências do usuário no próprio celular, por exemplo, cor de fundo da página, imagens já vistas etc.
      Como é algo que vai ser usado exclusivamente por cada usuário, em seu celular, não quero armazenar isso no servidor. 
      Seguindo o exemplo do fundo da página. Eu precisaria, por exemplo, de um local só pra armazenar uma variável. Ela até já pode existir, tipo, tendo um valor padrão, mas que desse pra modificar quando o usuário quisesse. 
      Já tentei usar cookies e localstorage, mas não funcionou. O localstorage não é compatível com a versão do navegador padrão.
      Alguém sabe o que eu poderia fazer? Pra mim, o ideal seria ter um arquivo txt que eu pudesse modificar. Ou um xml, algo assim.
      Desde já, obrigado.
    • Por karina pereira refacho
      Pessoal gostaria de saber como faço para gravar os resultados do codigo abaixo dividindo em diversos .txt, o script abaixo vai me gerar um arquivo de 10000 sha1 e salvar em um so arquivo, gostaria que ele me salvasse  10 arquivos .txt diferentes, ai cada arquivo txt teria 1000 sha1 ate finalizar os 10 arquivos .txt, o primeiro arquivo ficaria com o nome de 1000.txt o segundo arquivo 2000.txt o terceiro 3000.txt e assim por diante.
      segue abaixo o codigo
      <?php $temp = "\r\n"; $n=1; for ( $number = 1 ; $number <= 10000 ; ++$number ) { $variavel = hash('sha1', $number); $n++; $file = fopen("/home/robson/Documentos/novo.txt","a+"); fwrite ($file, $variavel = hash('sha1', $number).' = '.$temp ); if ($file == false) die('Não foi possível criar o arquivo.'); fclose($file); } ?> desde ja agradeço a atenção de todos tenham uma otima semana.
    • Por karina pereira refacho
      Pessoal gostaria de saber como faço para rodar o codigo abaixo no php sem  travar o navegador, pois o arquivo e grande e da problema de limite de memoria, nesse script irei gerar todas as hash de 1 até 500000000 e salvar em txt, como faço para o script gerar essas hash salvando em diversos arquivos txt de 50000 em 50000 ate finalizar todo o processo, detalhe ao salvar o arquivo txt teria que renomear o txt desse jeito exemplo 50000.txt, 100000.txt, 150000.txt ate terminar o total de 500000000 hash criadas,
      obrigado pela atenção de todos segue codigo abaixo
      <?php // array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ..., 3000) $temp = "\r\n"; $n=1; foreach (range(1, 550000000) as $number) { $variavel = hash('sha512', $number); $n++; $file = fopen("/home/robson/Documentos/55000000.txt","a+"); fwrite ($file, $variavel = hash('sha512', $number).' = '.$temp ); if ($file == false) die('Não foi possível criar o arquivo.'); fclose($file); } ?>  
    • Por william_droops
      Preciso escrever um arquivo TXT, com espaços definidos, por exemplo o espaço para o nome com 50 caracteres no maximo, mas se o nome tiver apenas 3 caracteres preciso pular os outros 47, e assim por diante, porém não sei o nome que vem do banco de dados, como faço para contar a variável e preencher com espaços o restante do espaço.
       
      Por exemplo: arquivo.txt
       
      João Souza                             joao.souza@teste               2018-01-15
×

Informação importante

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

Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: