Jump to content


Photo

Inserir Valor Em Bd Através De Arquivo Texto


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

#1 Andreia Regina

Andreia Regina

    Veterano

  • Conselheiros
  • 1347 posts
  • Sexo:Feminino
  • Localidade:PR
  • Interesses:PHP; MySQL; Javascript; CSS; tudo ligado ao desenvolvimento web.

Posted 30/06/2005, 14:57

Olá Pessoal!

Eu utilizo este código para inserir dados no banco de dados MySQL, porém ele insere apenas uma linha e ainda com valores 00 nos campos int e float e em branco no campo varchar.
Ele executa o script com sucesso, mas qdo verifico no banco não estão os dados inseridos :wacko: e se eu pego este mesmo arquivo e, utilizando o phpmyadmin ele insere certinho os dados.
Já usei este mesmo script para inserir textos e insere normalmente só agora para este caso que não está funcionando :(
Será que alguém de vocês pode me ajudar?

<?php
require_once('conexao.php');

$file = fopen ('desc.txt', 'r');

while (!feof($file)) 
{
  $line = fgets($file, 4096);
  if (!ereg ("#", $line)) 
  {
	list ($ano, $mes, $matricula, $tipo_desconto, $valor) = explode ('|', $line);
	$ano           = trim($ano);
	$mes           = trim($mes);
	$matricula     = trim($matricula);
	$tipo_desconto = trim($tipo_desconto);
	$valor         = trim($valor);
	
	$valor = str_replace(",", ".", $valor);

	$sql=mysql_query("TRUNCATE TABLE `tb_descontos`");

	$sql = "INSERT INTO tb_descontos (ano,mes,matricula,tipo_desconto,valor) VALUES ('$ano','$mes','$matricula','$tipo_desconto','$valor')";
	$resultado = mysql_query($sql) or die(mysql_error());
  }
}

fclose ($file);
mysql_close();

if ($resultado)
{
  print "Dados copiados com sucesso!";
}
else
{
  print "Foi possível copiar os dados do arquivo.";
}
?>
a tabela está estruturada assim:

Campo         Tipo           Atributos                Nulo Padrão
ano         int(4)            UNSIGNED ZEROFILL Não  0000
mes         int(2)            UNSIGNED ZEROFILL Não  00
matricula         int(10)          UNSIGNED ZEROFILL Não  0000000000
tipo_desconto  varchar(30)                   Não  
valor         decimal(5,2)  UNSIGNED ZEROFILL Não  000.00

já tentei como float e decimal para o campo valor mas não deu certo de nenhuma das formas.

Obrigada

Andreia Regina

Edição feita por: Andreia Regina, 30/06/2005, 15:01.

Fórum WMO - Conselheira - Na equipe desde 31/01/2006.
Links importantes: Regras de conduta - Busca do fórum


#2 lugs

lugs

    Normal

  • Usuários
  • 83 posts
  • Sexo:Não informado
  • Localidade:Capinas - SP

Posted 30/06/2005, 17:58

insere essa linha no meio que vai te ajudar muito:

$sql=mysql_query("TRUNCATE TABLE `tb_descontos`");

$sql = "INSERT INTO tb_descontos (ano,mes,matricula,tipo_desconto,valor) VALUES ('$ano','$mes','$matricula','$tipo_desconto','$valor')";
$resultado = mysql_query($sql) or die(mysql_error());

#essa linha abaixo!
echo "$sql<p>";

ou seja, veja o q ele vai imprimir, se está coerente,

para esses casos estranhos, sempre imprima o q ele está fazendo, fica bem + fácil detectar o erro
"Qndo eu apontar para a Lua, não olhe para o meu dedo"

#3 Andreia Regina

Andreia Regina

    Veterano

  • Conselheiros
  • 1347 posts
  • Sexo:Feminino
  • Localidade:PR
  • Interesses:PHP; MySQL; Javascript; CSS; tudo ligado ao desenvolvimento web.

Posted 30/06/2005, 18:11

Olá lugs!!!

Coloquei o echo e mostrou assim:

INSERT INTO tb_descontos (ano,mes,matricula,tipo_desconto,valor) VALUES ('2004','10','10','BODY COMBAT','20.00 ')INSERT INTO tb_descontos (ano,mes,matricula,tipo_desconto,valor) VALUES ('2004','11','10','BODY COMBAT','20.00 ')INSERT INTO tb_descontos (ano,mes,matricula,tipo_desconto,valor) VALUES ('2004','12','10','BODY COMBAT','20.00 ')INSERT INTO tb_descontos (ano,mes,matricula,tipo_desconto,valor) VALUES ('2004','12','10','TAXA BANCARIA','1.70 ')INSERT INTO tb_descontos (ano,mes,matricula,tipo_desconto,valor) VALUES ('2004',' 9','10','BODY COMBAT','20.00 ')INSERT INTO tb_descontos (ano,mes,matricula,tipo_desconto,valor) VALUES ('2004',' 9','10','ESPORTES E CONFEC€OES JUNHO/04','10.00 ')INSERT INTO tb_descontos (ano,mes,matricula,tipo_desconto,valor) VALUES ('2005',' 1','10','BODY COMBAT','20.00 ')INSERT INTO tb_descontos (ano,mes,matricula,tipo_desconto,valor) VALUES ('','','','','')
Dados copiados com sucesso!

que são os dados do arquivo que eu tenho.
Mas não inseriu nada no banco :(

Obrigada

Andreia Regina

======= Editando ....
Ficou assim o código:
<?php
require_once('conexao.php');

$sql=mysql_query("TRUNCATE TABLE `tb_descontos`");

$dados = file('desc.txt');

foreach($dados as $row){
	$campo = explode('|', $row);
	$valor = str_replace(",", ".", $campo[4]);
	$sql = "INSERT INTO tb_descontos (ano, mes, matricula, tipo_desconto, valor) VALUES ('$campo[0]', '$campo[1]', '$campo[2]', '$campo[3]', '$valor')";
	$resultado = mysql_query($sql) or die(mysql_error());
}
mysql_close();
if ($resultado)
{
  print "Dados copiados com sucesso!";
}
else
{
  print "Foi possível copiar os dados do arquivo.";
}
?>
Andreia Regina

Edição feita por: Andreia Regina, 01/07/2005, 10:34.

Fórum WMO - Conselheira - Na equipe desde 31/01/2006.
Links importantes: Regras de conduta - Busca do fórum





1 user(s) are reading this topic

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

IPB Skin By Virteq