Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal!
Já faz umas duas semanas que tento encontrar uma solução na internet para importar um arquivo .CSV para o banco de dados mas percebi que existe uma certa carência em relação a este material, a grande maioria dos scripts que consegui na internet sempre davam problema na inserção no banco, um campo com espaço, campo numérico errado... enfim, no final das contas consegui resolver o problema e agora tenho o prazer de compartilhar essa solução com vcs..
Abaixo o código:
index.php
<html>
<head>
<title>Importar Planilha</title>
</head>
<body>
Selecione a planilha no formato CSV a ser importada
<form enctype="multipart/form-data" action="importar.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
Selecione o arquivo:
<input name="arquivo" type="file">
<br><br>
<input type="submit" value="Importar">
</form>
</body>
</html>
importar.php
<html>
<head>
<title> Importação de Planilha </title>
</head>
<body>
<?php
include ("classes/Upload.class.php");
$upload = new Upload();
$upload -> getMensagem();
?>
<meta http-equiv="refresh" content="3;url=index.php">
</body>
</html>
Upload.class.php
<?php
include ("Importar.class.php");
class Upload
{
public $uploaddir;
public $uploadfile;
public $mensagem;
function Upload()
{
$this -> uploaddir = "csv/";
$this -> uploadfile = $this -> uploaddir . $_FILES['arquivo']['name'];
if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $this -> uploaddir . $_FILES['arquivo']['name']))
{
$this -> mensagem = "Sua planilha foi carregada com sucesso! <br>";
$importado = $_FILES['arquivo']['name'];
$importar = new Importar($importado);
}
else
{
$this -> mensagem = "Ocorreu um erro ao carregar planilha.
<br>
Favor contacte administrador do Sistema. <br>";
}
}
function getMensagem()
{
echo $this -> mensagem;
}
}
?>
Importar.class.php
<?php
include ("ConectaBanco.class.php");
class Importar extends ConectaBanco
{
public $arquivocsv = "csv/";
public $tabela = "SUATABELA";
function Importar($importado)
{
parent::Conectar();
$this -> arquivocsv .= $importado;
$handle = file($this -> arquivocsv);
for ($i=1; $i<count($handle); $i++)
{
$valori = explode(";", $handle[$i]);
$values = "";
foreach ($valori as $val)
{
$val = trim($val);
if (eregi("NULL",$val) == 0)
$values .= "'".addslashes($val)."',";
else
$values .= "NULL,";
}
$values = trim(substr($values,0,-1));
$query = "INSERT INTO {$this -> tabela} VALUES (null, ".trim($values).");";
mysql_query($query);
}
}
}
?>
ConectaBanco.class.php
<?php
class ConectaBanco
{
var $host = "localhost";
var $user = "root";
var $pass = "senha";
var $base = "base";
var $link = "";
function ConectaBanco()
{
$this -> Conectar();
}
function Conectar()
{
$this -> link = mysql_connect($this -> host, $this ->user, $this ->pass);
if (!$this ->link)
{
die ("Erro ao conectar.");
}
elseif (!mysql_select_db($this ->base, $this ->link))
{
die ("Erro ao selecionar banco.");
}
}
}
?>
A tabela no banco encontra-se na seguinte estrutura:
1 campo chamado id do tipo inteiro e auto incremento;
1 campo chamado nome do tipo varchar
1 campo chamado telefone do tipo numérico
1 campo chamado email do tipo varchar
1 campo chamado endereco do tipo varchar
A estrutura da planilha está mais ou menos assim:
NOME | TELEFONE | EMAIL | ENDERECO
___________________________________________________________________
junor | 2345678 | junior@junior.com | avenida a
imasters | 54545 | im@forum.com | rua imasters
- As classes estão localizadas na pasta CLASSES;
- O script faz o upload do arquivo para a pasta CSV;
- Logo abre o script importado e joga os dados para o banco;
- Note que a primeira linha da planilha (onde fica os nomes das colunas) é despresada pelo script;
Pessoal, eh isso ai, espero ter ajudado.
Abraço a todos!
Att
Junior
Carregando comentários...