Jump to content


Photo

Importar Tabela


  • Faça o login para participar
12 replies to this topic

#1 Tatiana Carrazzoni

Tatiana Carrazzoni

    Turista

  • Usuários
  • 26 posts
  • Sexo:Feminino
  • Localidade:Recife

Posted 28/01/2008, 08:23

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...

Edição feita por: Tatiana Carrazzoni, 28/01/2008, 08:34.


#2 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 28/01/2008, 08:41

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

Então não está funcionando... :D

Ok, não ocorre nenhum erro na tela, certo?

Tente isolar a linha que executa adicionando a parte para exibir possíveis erros, assim:

mysql_query($sql_insert) or die(mysql_error());

PS: imagino que esta parte que está comentada foi só para você fazer um teste né? ^_^Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#3 Tatiana Carrazzoni

Tatiana Carrazzoni

    Turista

  • Usuários
  • 26 posts
  • Sexo:Feminino
  • Localidade:Recife

Posted 28/01/2008, 09:01

Paulo, eu descomentei aquela parte do codigo q vc falou, o codigo agora ta assim:

<?
$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');
}
?>

onde faço alteração?? ele mostra os dados do arquivo csv, mas n insere no banco...

#4 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 28/01/2008, 09:33

Coloque esta linha sozinha:

mysql_query($sql_insert) or die(mysql_error());

Depois do print (que pode comentar por enquanto também), pode deixar a outra parte comentada por enquanto.

Depois que fui ver que você já colocou o mysql_error() já, mas mesmo assim faça o teste.Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#5 Tatiana Carrazzoni

Tatiana Carrazzoni

    Turista

  • Usuários
  • 26 posts
  • Sexo:Feminino
  • Localidade:Recife

Posted 28/01/2008, 09:38

Paulo..

fiz algumas alterações no código 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 inves dele colocar o numero do grupo, ele coloca "0"...

pq??

#6 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 28/01/2008, 09:54

Bom, se este é o único problema, o erro deve estar nesta linha:

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

Já fez um debug para ver o valor? Um simples echo com $registros[2] antes de inserir você vai ver qual o valor.

Aliás, faça assim:

print_r($registros); exit;

Coloque antes da linha onde você usa o substr(), ai você acha o valor da chave 2 e verifica se você realmente está buscando os 3 primeiros caracteres, que é isso que você informou na substr(). ;)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#7 Tatiana Carrazzoni

Tatiana Carrazzoni

    Turista

  • Usuários
  • 26 posts
  • Sexo:Feminino
  • Localidade:Recife

Posted 28/01/2008, 09:57

Eu coloquei o print_r ($registros); ele aparece isso:

INSERT INTO clientes (id, nome, email, grupo) VALUES(NULL, 'Tati', 'maga_tati@hotmail.com', '2')
Array ( [0] => Tati [1] => maga_tati@hotmail.com [2] => 2 )

o campo id é auto increment

Edição feita por: Tatiana Carrazzoni, 28/01/2008, 09:58.


#8 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 28/01/2008, 10:07

Não era exatamente ai mas tudo bem, deu pra ver o resultado.

Ok, como você viu, a terceira posição, que é a que você quer ($registros[2]), tem o valor 2 neste caso. Então, não vejo por que usar o substr para pegar os 3 primeiros caracteres. :ponder:

Você pode retirar esta linha do substr() e outra dica, como id é auto-increment, não precisa colocá-la na query:

$sql_insert = "INSERT INTO newsletter (nome, email, grupo)
				VALUES('" . $registros[0] .  "', '" . $registros[1] .  "', '" . $registros[2] . "')";
Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#9 Tatiana Carrazzoni

Tatiana Carrazzoni

    Turista

  • Usuários
  • 26 posts
  • Sexo:Feminino
  • Localidade:Recife

Posted 28/01/2008, 10:14

eu tirei o id, porem ele n ta cadastrando mais...

se vc puder me dar seu msn p eu te passar o link, senha e login tudo bem...
ai vc analisa direitinho

#10 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 28/01/2008, 10:35

Mas o que temos que ver é o código, ele executando ou não não interessa muito, concorda? :D

Poste como está o seu código atual, inclusive com as últimas alterações que eu disse. (ok2) Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#11 Tatiana Carrazzoni

Tatiana Carrazzoni

    Turista

  • Usuários
  • 26 posts
  • Sexo:Feminino
  • Localidade:Recife

Posted 28/01/2008, 11:18

<?

$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] = trim($registros);

		$sql_insert	=	"INSERT INTO clientes (nome, email, grupo) VALUES(" . $registros[0] .  ", " . $registros[1] .  ", " . $registros[2] . ")";

		print($sql_insert."<br>");

		if(mysql_query($sql_insert)){

			$inseridos++;

		} else {

			print "Impossível inserir no banco de dados. Erro: " . mysql_error()."<br>";

		}

	}



	fclose($fp);

	

	print("Foram inseridos <strong>" . $inseridos . "</strong> Registros");

	$sql_select = "SELECT nome, email, grupo FROM clientes";

	$teste = mysql_query($sql_select);

	while($fet_teste = mysql_fetch_array($teste)){

 	print($fet_teste['nome'] . ", " . $fet_teste['email'] . ", " . $fet_teste['grupo'] . "<br>");

}

}

?>

<!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>


#12 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 28/01/2008, 12:29

Tente:

[codebox]<?
$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] = trim($registros);
$sql_insert = "INSERT INTO clientes (`nome`, `email`, `grupo`) VALUES('" . $registros[0] . "', '" . $registros[1] . "', '" . $registros[2] . "')";
print($sql_insert."<br>");
if(mysql_query($sql_insert)){
$inseridos++;
} else {
print "Impossível inserir no banco de dados. Erro: " . mysql_error()."<br>";
}
}

fclose($fp);

print("Foram inseridos <strong>" . $inseridos . "</strong> Registros");
$sql_select = "SELECT nome, email, grupo FROM clientes";
$teste = mysql_query($sql_select);
while($fet_teste = mysql_fetch_array($teste)){
print($fet_teste['nome'] . ", " . $fet_teste['email'] . ", " . $fet_teste['grupo'] . "<br>");
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR...ml4/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>[/codebox] Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#13 Tatiana Carrazzoni

Tatiana Carrazzoni

    Turista

  • Usuários
  • 26 posts
  • Sexo:Feminino
  • Localidade:Recife

Posted 28/01/2008, 12:37

Ok!! funcionou...

valeu pela ajuda....




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq