Tatiana Carrazzoni Postado Janeiro 28, 2008 Denunciar Share Postado Janeiro 28, 2008 (editado) 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 Janeiro 28, 2008 por Tatiana Carrazzoni Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Janeiro 28, 2008 Denunciar Share Postado Janeiro 28, 2008 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.'; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tatiana Carrazzoni Postado Janeiro 28, 2008 Autor Denunciar Share Postado Janeiro 28, 2008 ESerra, fiz essa alteração q você falou e descomentei... deu o seguinte erro:INSERT INTO newsletter (id, nome, email, grupo) VALUES(NULL, 'Tati', 'maga_tati@hotmail.com', '2')Unknown column 'email' in 'field list' Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Janeiro 28, 2008 Denunciar Share Postado Janeiro 28, 2008 Ai tá dizendo que não existe nenhuma coluna chamada email... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tatiana Carrazzoni Postado Janeiro 28, 2008 Autor Denunciar Share Postado Janeiro 28, 2008 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 grupoquando 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?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Janeiro 28, 2008 Denunciar Share Postado Janeiro 28, 2008 Então a variável que contem o número do grupo está vazia, e se o campo for do tipo INT ai ele vai inserir um zero.Dê um print_r no array $registros para ver em que índice está o número de grupo... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tatiana Carrazzoni Postado Janeiro 28, 2008 Autor Denunciar Share Postado Janeiro 28, 2008 (editado) ESerra, ele ta aparecendo 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 Editado Janeiro 28, 2008 por Tatiana Carrazzoni Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Janeiro 28, 2008 Denunciar Share Postado Janeiro 28, 2008 É... 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... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tatiana Carrazzoni Postado Janeiro 28, 2008 Autor Denunciar Share Postado Janeiro 28, 2008 Aparece assim:2 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 q ta me deixando confusa é q aparece os dados certos, mas quando vai p o banco de dados ele n vai certo... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Janeiro 28, 2008 Denunciar Share Postado Janeiro 28, 2008 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tatiana Carrazzoni Postado Janeiro 28, 2008 Autor Denunciar Share Postado Janeiro 28, 2008 continua indo p o banco porem o grupo vai com 0 e n com o numero certo... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Janeiro 28, 2008 Denunciar Share Postado Janeiro 28, 2008 Coloca aqui a modelagem dessa tabela, com as especificações dos campos... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tatiana Carrazzoni Postado Janeiro 28, 2008 Autor Denunciar Share Postado Janeiro 28, 2008 a tabela ta assim:CREATE TABLE `clientes` ( `id` int(4) NOT NULL auto_increment, `nome` varchar(255) NOT NULL default '', `email` varchar(255) NOT NULL default '', `grupo` int(4) NOT NULL default '1', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=latin1; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Janeiro 28, 2008 Denunciar Share Postado Janeiro 28, 2008 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... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tatiana Carrazzoni Postado Janeiro 28, 2008 Autor Denunciar Share Postado Janeiro 28, 2008 insere certo... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Janeiro 28, 2008 Denunciar Share Postado Janeiro 28, 2008 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tatiana Carrazzoni Postado Janeiro 28, 2008 Autor Denunciar Share Postado Janeiro 28, 2008 (editado) 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 20INSERT 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 Janeiro 28, 2008 por Tatiana Carrazzoni Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Janeiro 28, 2008 Denunciar Share Postado Janeiro 28, 2008 http://br2.php.net/trim$variavel = trim(' ALGUMA COISA '); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tatiana Carrazzoni Postado Janeiro 28, 2008 Autor Denunciar Share Postado Janeiro 28, 2008 esse alguma coisa seria o q mais precisamente??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Janeiro 28, 2008 Denunciar Share Postado Janeiro 28, 2008 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', )" ??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tatiana Carrazzoni Postado Janeiro 28, 2008 Autor Denunciar Share Postado Janeiro 28, 2008 consegui fazer esse trim.. e consegui fazer c q ele funcionasse... agora ta tudo funcionando direitinho, valeu pela ajuda... minha bronca agora é outra...agora é salvar as msgs enviadas e criar relatorio... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Tatiana Carrazzoni
Bom dia...
Gostaria de importar uma tabela para o phpmyadmin através do código abaixo:
ele está funcionando, mas não ta inserindo no banco....
preciso de ajuda urgente...
Editado por Tatiana CarrazzoniLink para o comentário
Compartilhar em outros sites
20 respostass a esta questão
Posts Recomendados
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.