Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcio_123

Importacao de arquivos csv com php

Recommended Posts

ola pessoal estou usando esse arquivo para importar uma tabela feita em excel e salva como arquivo .csv

 

Esta tudo certo ele importa sem problemas o que ocorre é que tem uma linha de cabecalho, e precisa pular, alguem poderia me dar um help para pular essa 1° linha, absss

 

	if ($_FILES[csv][size] > 0) { 

    //pega o arquivo csv
    $file = $_FILES[csv][tmp_name]; 
    $handle = fopen($file,"r"); 
     
    //insere no banco de dados
    do { 
        if ($data[0]) { 
            mysql_query("INSERT INTO tb_folha_pagamento (mes, nome, cargo, secretaria, vinculo, proventos, fixo, liquido) VALUES 
                ( 
					'$mes',
                    '".addslashes($data[3])."', 
                    '".addslashes($data[4])."', 
                    '".addslashes($data[10])."',
					'".addslashes($data[15])."', 
                    '".addslashes($data[11])."',
					'".addslashes($data[12])."',
					'".addslashes($data[13])."'
                ) 
            "); 
        } 
    } while ($data = fgetcsv($handle,1000,";","'")); 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para descartar o cabeçalho basta ler a primeira linha antes do loop e descartá-la(veja o primeiro comentaŕio do exemplo abaixo), também tomei a liberdade de realizar outros ajustes que considerei relevantes porem eles não tem relação com sua pergunta.

//...

//Lê a primeira com o cabeçalho e a descarta, essa é a única linha necessária para resolver seu problema.
fgetcsv($handle,1000,";","'");

//Alterei o **do while** para while pois não existia linha para ser processada antes da primeira interação
while ($data = fgetcsv($handle,1000,";","'")) {
    //Alterei seu if para uma condição mais especifica.
    //Caso a linha esteja em branco pula para a proxima linha.
    //REF: http://php.net/fgetcsv#refsect1-function.fgetcsv-returnvalues
    //A blank line in a CSV file will be returned as an array comprising a single null field, and will not be treated as an error. 
    if(count($data) === 1 && $data[0] === null)
        continue;

    mysql_query("INSERT INTO tb_folha_pagamento (mes, nome, cargo, secretaria, vinculo, proventos, fixo, liquido) VALUES 
        ( 
            '$mes',
            //Alterei o uso da função addslashes para a mysql_real_escape_string pois embora ela "resolva" o problema,
            //ela não foi feita exatamente para este proposito podendo escapar caracteres a mais ou menos do que o necessário
            //e como já temos uma função para isso na própria biblioteca porque não utiliza-la?
            '".mysql_real_escape_string($data[3])."', 
            '".mysql_real_escape_string($data[4])."', 
            '".mysql_real_escape_string($data[10])."',
            '".mysql_real_escape_string($data[15])."', 
            '".mysql_real_escape_string($data[11])."',
            '".mysql_real_escape_string($data[12])."',
            '".mysql_real_escape_string($data[13])."'
        ) 
    ");
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Marcio_123
      fala galera blzzz.
       
      to usando esse arquivo para importar arquivo csv e gravar no banco mas ta importando um monte de ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
       
      alguem pode dar um helpizinho ai..
       
      $file = $_FILES[csv][tmp_name]; $handle = fopen($file,"r"); fgetcsv($handle,1000,";","'"); //insere no banco de dados while ($data = fgetcsv($handle,1000,";","'")) { if(count($data) === 1 && $data[0] === null) continue; mysql_query ("INSERT INTO tb_repasses_setor (campos da tabela) VALUES ( '".mysql_real_escape_string($data[0])."', '".mysql_real_escape_string($data[1])."', '".mysql_real_escape_string($data[2])."', '".mysql_real_escape_string($data[3])."', '".mysql_real_escape_string($data[4])."', '".mysql_real_escape_string($data[5])."', '".mysql_real_escape_string($data[6])."', '".mysql_real_escape_string($data[7])."', '".mysql_real_escape_string($data[8])."' ) "); }  
    • Por empirerock
      Bom dia.
      Não estou achando uma solução para pular a primeira linha do arquivo csv (Item;Descrição;Família;ABC;Saldo Estoque;....).
      Agradeço quem puder ajudar.
      Segue arquivo csv. Só preciso pular a primeira linha quando for importar para o banco mysql.
      Item;Descrição;Família;ABC;Saldo Estoque;Saldo Embalagem;Saldo OPs Abertas;Lote Minimo;Qt.Pedida Total;Nr.Pedida Total;Pendência 10101;CABO ACEL MERCEDES-BENZ - MB 180;CABO-101;E;113;0;0;40;0;0;-113 10102;CABO ACEL MERCEDES-BENZ - SPRINTER;CABO-101;D;48;0;0;80;10;3;-38 10103;CABO ACEL MERCEDES-BENZ - ONIBUS LO - 709/809/812/912;CABO-101;D;53;0;0;40;10;1;-43 10201;CABO FREIO MERCEDES-BENZ - MB 180 TRASEIRO;CABO-102;E;53;0;0;40;0;0;-53 10202;CABO FREIO MERCEDES-BENZ - MB 180 DIANTEIRO;CABO-102;E;256;0;0;40;0;0;-256 10206;CABO FREIO MERCEDES-BENZ - CAMINHAO L-709/710/912 LE;CABO-102;E;26;0;0;40;5;1;-21 Segue script PHP que importa para o banco.
      <?php error_reporting(0); ini_set(“display_errors”, 0 ); $conexao = mysql_connect("localhost", "", ""); if($conexao) { mysql_select_db("producao", $conexao) or die("O banco solicitado não pode ser utilizado : . mysql_error()"); } else{echo "não foi possivel estabelecer uma conecção";} $tabela = "estf004"; $arquivo = 'upload/estf004/estf.csv';// aquivo a ver importado csv do execel $arq = fopen($arquivo,'r'); while(!feof($arq)) for($i=0; $i<1; $i++){ if ($conteudo = fgets($arq)){ $ll++; $linha = explode(';', $conteudo); } $sql = "INSERT INTO $tabela (CODIKS, DESCRICAO, FAMILIA, ABC, SALDO_ESTOQUE, SALDO_EMBALAGEM, SALDO_OP_ABERTA, LOTE_MINIMO, QT_PERDIDA_TOTAL, NR_PERDIDA_TOTAL, PENDENCIA ) VALUES ('$linha[0]', '$linha[1]', '$linha[2]', '$linha[3]', '$linha[4]', '$linha[5]', '$linha[6]', '$linha[7]', '$linha[8]', '$linha[9]', '$linha[10]' )"; $result = mysql_query($sql) or die(mysql_error()); $linha = array(); } echo "quantidade de linhas importadas = ".$ll; ?>
×

Informação importante

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