Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Importar tabela


Tatiana Carrazzoni

Pergunta

Bom dia...

Gostaria de importar uma tabela para o phpmyadmin através do código abaixo:

<?
$add = $_GET["add"];

if($add == "sim") {

$caminho = '';
$arquivo = 'importa.csv';
//if(!empty($_POST['submit'])){
move_uploaded_file($_FILES['arquivo']['tmp_name'], $caminho . $arquivo);

//Abrindo arquivo para leitura
$fp = fopen($caminho . $arquivo, 'r');
$inseridos = 0;
while($dados = fgets($fp)){
  $dados = str_replace('ÿþ','', str_replace('"', '', str_replace(';', '', $dados)));
  
  $registros = explode(',',$dados);
  $registros[2] = substr($registros[2], 0, 3);
  $sql_insert = "INSERT INTO newsletter (id, nome, email, grupo) VALUES(NULL, '" . $registros[0] .  "', '" . $registros[1] .  "', '" . $registros[2] . "')";
  print($sql_insert.'<br>');
  /*if(mysql_query($sql_insert)){
   $inseridos++;
  } else {
   'Impossível inserir no banco de dados. Erro: ' . mysql_error();
  }*/
}

fclose($fp);

print('Foram inseridos <strong>' . $inseridos . '</strong> Registros');
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form method="POST" action="admin.php?acao=gsi&add=sim" enctype="multipart/form-data">
Arquivo CSV:<br>
<input type="file" id="arquivo" name="arquivo"/><br>
<br>
<input type="submit" value="Processar..." />
</form>
</body>
</html>

ele está funcionando, mas não ta inserindo no banco....

preciso de ajuda urgente...

Editado por Tatiana Carrazzoni
Link para o comentário
Compartilhar em outros sites

20 respostass a esta questão

Posts Recomendados

  • 0

Você quer importar para o phpmyadmin? Ou para o MySQL? Pois o phpmyadmin é só um gerenciador de banco de dados, e nele você já tem a ferramenta para importar os diversos tipos de arquivo que o próprio phpmyadmin gera na exportação.

Quanto ao seu código, pelo que você passou, a parte que insere no BD está comentada...

/*if(mysql_query($sql_insert)){
   $inseridos++;
  } else {
   'Impossível inserir no banco de dados. Erro: ' . mysql_error();
  }*/
De qualquer maneira a sintaxe também não é preferivel, o melhor seria:
$insere = mysql_query($sql_insert) OR DIE (mysql_error());
if($insere){
   $inseridos++;
  } else {
   'Impossível inserir no banco de dados.';
  }

Link para o comentário
Compartilhar em outros sites

  • 0

ESerra,

fiz algumas alterações no código, foi porque o nome da tabela tava errada... e agora ele ta inserindo, mas n por completo...

existe uma tabela clientes onde tem os campos id, nome, email e grupo

quando coloco p importar o arquivo csv, ele pega todos os campos menos o grupo, ao invés dele colocar o numero do grupo, ele coloca "0"...

porque??

Link para o comentário
Compartilhar em outros sites

  • 0

É... está certo (pelo menos está aparecendo um valor numérico...)

Olhando um pouco mais...

$registros[2] = substr($registros[2], 0, 3);

Pra que isso?

Dê um echo no $registros[2] depois do substr pra ver o que está retornando...

Link para o comentário
Compartilhar em outros sites

  • 0

Na query tire o:

'" . $registros[2] . "'

E passe para:

'8' (para testar)

Se continuar aparecendo zero o problema é no campo, se aparecer o 8, ai tente:

$registros[2] = (INT)substr($registros[2], 0, 3);//Para converter o número para inteiro

Link para o comentário
Compartilhar em outros sites

  • 0

mysql_query("INSERT INTO newsletter (id, nome, email, grupo) VALUES(NULL, 'teste', 'teste@teste', '2');

Veja se isso em cima insere... se não inserir, tente pelo phpmyadmin, se funcionar no phpmyadmin copie a query que ele utilizou para inserir os dados e cole aqui...

Link para o comentário
Compartilhar em outros sites

  • 0
continua indo p o banco porem o grupo vai com 0 e n com o numero certo...

Uma coisa que eu não entendi "n com o numero certo..." que n?

Experimente dar um trim no $registros[2] para evitar que esteja indo algum espaço no começo ou fim...

EDIT:

E aproveita e coloca no topo do arquivo:

error_reporting(E_ALL);

Isso vai obrigar o PHP a exibir qualquer tipo de mensagem que está sendo omitida.

Link para o comentário
Compartilhar em outros sites

  • 0

como faço esse trim??

sou iniciante...

coloquei esse error_reporting(E_ALL); e acusou esse erro...

Warning: Wrong parameter count for trim() in /home2/infosky/public_html/teste/newsletter/novo/admin/gsi.php on line 20

INSERT INTO clientes (id, nome, email, grupo) VALUES(NULL, 'Tati', 'maga_tati@hotmail.com', )

Notice: Undefined offset: 1 in /home2/infosky/public_html/teste/newsletter/novo/admin/gsi.php on line 21

Editado por Tatiana Carrazzoni
Link para o comentário
Compartilhar em outros sites

  • 0

ALGUMA COISA é qualquer coisa, exemplificando:

$teste = "123 ";

$variavel = trim($teste);

$teste = " xxxxxxxxxxxxxx xx");

$variavel = trim($teste);

$teste = " cvxcvxcvcx ";

$varival = trim($teste);

$variavel = trim('dfcvc cvcxvcx ');

$variavel = trim(' uma frase qualquer ');

Acho que esses exemplos foram suficientes, qualquer coisa me avise que eu posso colocar mais alguns se "alguma coisa" ainda não ficou claro... uma dica válida é SEMPRE leia o manual, nele existem exemplos práticos de tudo.

--------------

INSERT INTO clientes (id, nome, email, grupo) VALUES(NULL, 'Tati', 'maga_tati@hotmail.com', )

Um negócio o print está retornando isso "INSERT INTO clientes (id, nome, email, grupo) VALUES(NULL, 'Tati', 'maga_tati@hotmail.com', )" ???

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652,1k
×
×
  • Criar Novo...