Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Andreia Regina

Inserir dados em bd através de arquivo Texto

Recommended Posts

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

[*]

[*]<?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

Compartilhar este post


Link para o post
Compartilhar em outros sites

porque você naum utiliza a funcao file() para ler as linhas do teu arquivo?deixa teu script bem mais enxuto! ;) o file le o arquivo e por cada linha do arquivo dentro de um array, dae tu da um foreach e manda brasa no INSERT no banco!!! ;) Qualquer coisa me manda esse teu arquivo TXT pra mim que faco um script simplinho que le o arquivo e insere no banco, mas não tem segredo!Oque pode ser que está inserindo apenas 1 registro no banco, é que seu arquivo não deve conter nenhum \n (newline), pode ser que esteja tudo concatenado os campos sem quebra de linha, dae como você está utilizando a função fgets, ela executa e retorna registro até encontrar \n ou o ponteiro chegar no final do arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.