Ir para conteúdo

Arquivado

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

Marcio_123

Importar arquivo csv para mysql

Recommended Posts

Pessoal estou importando um arquivo tabela de salario feita em excel salva como CSV (separado por virgula) (*.csv)

 

Nos campos salario tipo moeda ainda no excel eu formato os campos como geral porque não aceita simbolo de moeda R$ 975,58 formato como geral 975,58

 

O que ocorre é que apos importação para o mysql  ele não pega os numeros apos a virgula, ou seja ele arredonda para mais no caso acima ficaria 976

 

meu codigo usado na importação para o mysql.

<?php 
	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 (nome, funcao, email, idade, cidade, salario, liquido, situacao) VALUES 
                ( 
                    '".addslashes($data[0])."', 
                    '".addslashes($data[1])."', 
                    '".addslashes($data[2])."',
					'".addslashes($data[3])."', 
                    '".addslashes($data[4])."',
					'".addslashes($data[5])."',
					'".addslashes($data[6])."', 
                    '".addslashes($data[7])."'
                ) 
            "); 
        } 
    } while ($data = fgetcsv($handle,1000,",","'")); 
	
    //MENSAGEM 
$mgs = "Folha de Pagamento importada com Sucesso!";
} 

?> 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual formato do campo na tabela? tem que ser decimal e o decimal do mysql e do php é com ponto no lugar de virgula que é o padrão americano

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola marsolim no excel os campos de numeros esta no formato GERAL.

 

123,55
258,75
615,09

1650,25

 

No banco de dados os campos estão como tipo VARCHAR - apos importar esta apenas mudando a , (virgula) para . (ponto)

 

123.55
258.75
615.09

1650.25

 

 

 
 
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

varchar é para string e não para número. como eu falei número decimal tem que ser armazenado em campo decimal tenta mudar aí o campo

Compartilhar este post


Link para o post
Compartilhar em outros sites

mudei aqui, o que ocorre é que ele deixa os numeros apos a , (virgula) zerado

 

123,55

258,75

615,09

1650,25

 

depois de mudar de VARCHAR para DECIMAL no mysql fica assim

123.00

258.00

615.00

1650.00

Compartilhar este post


Link para o post
Compartilhar em outros sites

tu pode tentar converter pra decimal na hora de gravar com floatval(addslashes($data[n])) ou (float)addslashes($data[n]) onde [n] é o indice desse valor na array

Compartilhar este post


Link para o post
Compartilhar em outros sites

Brother fiz assim na saida do campo <?=$dados[liquido]; ?>

 

usei o number_format

 

<?= number_format($dados[liquido],2,",","."); ?>

 

resultado final 100% OK para quem precisar so usar ai galera.

9.728,06

315,66

1.722,55

Compartilhar este post


Link para o post
Compartilhar em outros sites

vindos duma consulta sql? se for

$qry = "SELECT SUM(nome_campo) as soma FROM nome_tabela";

// faz a consulta normalmente...

$row = ... //pega o resultado da consulta normalmente com fetch...

echo $row["soma"];

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas tu não fez a consulta aí, só criou a string de consulta e já tentou pegar os dados sem fazer a consulta:tounge_wink:

cadê o mysql_query($sql); antes do while?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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