Ir para conteúdo

POWERED BY:

Arquivado

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

Andreia Regina

Não dá erro mas não adiciona no bd.

Recommended Posts

Olá Pessoal!

 

O script abaixo não dá erro nenhum, inclusive me diz que os dados foram copiados com sucesso, porém quando eu entro na tabela em si não contém os dados adicionados.

 

a tabela está assim:

PRIMARY KEY crt ano

 

CRT o contrato pode repetir

ANO porém o haverá um contrato de número 1 por ano

DTA

BLS

IND

FAT

VND

CTV

CMP

CTC

 

o código php está assim:

PHP [/tr][tr]

<?php

require_once('conexao.php');

 

$file = fopen ("contrato.txt", "r");

if(!$file)

{

echo "Não foi possível concluir essa ação no momento, Por favor, tente novamente mais tarde!";

}

while (!feof($file))

{

$line = fgets($file, 4096);

if (!ereg ("#", $line))

{

list ($crt, $ano, $data, $bls, $ind, $fat, $vnd, $ctv, $cmp, $ctc) = explode (' ', $line);

$crt = trim($crt);

$ano = trim($ano);

$data = trim($data);

$bls = trim($bls);

$ind = trim($ind);

$fat = trim($fat);

$vnd = trim($vnd );

$ctv = trim($ctv);

$cmp = trim($cmp);

$ctc = trim($ctc);

$sql = "INSERT into contrato (crt, ano, data, bls, ind, fat, vnd, ctv, cmp, ctc)

VALUES ('$crt','$ano', '$data' ,'$bls' , '$ind', '$fat', '$vnd', '$ctv', '$cmp', '$ctc')"

;

$resultado= mysql_query($sql);

}//fechou o if (!ereg ("#", $line))

}//while (!feof($file))

echo $resultado;

echo "Dados copiados com sucesso";

fclose ($file);

?>

[/tr]

 

Ah! o conteúdo do $resultado tb não é mostrado.

 

Atenciosamente

 

Andreia Regina

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma dica!:

 

Quando atribui-se o resultado de uma query a uma variável no caso $resultado pode-se ter dois valores possíveis! NULO ou 1 (um)... pois é booleano.

 

O resultado será nulo (mostrara vazio, em branco, nadinha de nada :lol: ) quando a string sql estiver incorreta.

 

O resultado retornará 1 quando a query for executada com sucesso!!!

 

Por tanto, tente fazer assim:

 

PHP [/tr][tr]

<?

if ($resultado)

{

echo "Dados copiados com sucesso!";

}

else

{

echo "Houve algum erro ao tentar copiar os dados!";

}

?>

 

[/tr]

 

Espero ter ajudado em algo, se não der certo poste ae que tentaremos resolver...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá jonas_ti!Agora ele está criando um registro com os dados abaixo:

crt  ano    dta                bls  ind    fat  vnd    ctv                cmp    ctc0    0          F.                S                  0                                0 

porém a primeira linha do arquivo é:

crt  ano    dta                bls  ind    fat  vnd    ctv                cmp    ctc"1";"2002";"20/03/2002";"N";"US$";"N";"1261";"SR. FULANO";"1034";"SR. BELTRANO"

E mostra a seguinte mensagem de erro:

Duplicate entry '0-0' for key 1

Se eu importar via phpmyadmin ele importa sem problemas, mas não via código.Obrigada pela ajudaAndreia Regina

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Pessoal!

 

Alterei a linha

 

PHP [/tr][tr]

list ($crt, $ano, $data, $bls, $ind, $fat, $vnd, $ctv, $cmp, $ctc) = explode (' ', $line);

[/tr]

 

para

PHP [/tr][tr]

list ($crt, $ano, $data, $bls, $ind, $fat, $vnd, $ctv, $cmp, $ctc) = explode (";", $line);

[/tr]

 

Andreia Regina

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andréia,para clarear onde pode estar o erro, sugiro que você coloque temporariamente um "echo" na linha imediatamente anterior ao "INSERT". Só para testar como estão as variáveis PHP ($ano, $crt, $data).Se as variáveis estiverem OK a cada leitura, o erro estará na hora da gravação no banco.Se as variáveis estiverem com lixo, o erro estará na leitura do TXT.Pergunta: o arquivo CONTRATO.TXT está visível p/ o PHP ? Não precisa colocar o caminho (path) ?A msg "duplicate entry" ocorre porque ao tentar gravar o 2o. registro no banco com chaves "0", a chave é a mesma.Sucesso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá cassabarbosa!Coloquei o echo antes do insert e ele pega os valores corretos e na seqüência mostra uma mensagem de erro na sintaxe, vou analisar pois acabei de ver e aproveitei para já postar, porém se alguém quiser me ajudar nunca é demais."1""2002""20/03/2002""N""US$""N""1261""SR. ARI""1034""LAERCIO F. SOUZA"You have an error in your SQL syntax near ''crt', 'ano', 'dta', 'bls', 'ind', 'fat', 'vnd', 'ctv', 'cmp', 'ctc') VALUES (' at line 1Depois retorno aqui.Obrigada cassabarbosaAndreia Regina

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!retirei as aspas simples e o espaço do insert:$sql = "INSERT into contrato (crt,ano,dta,bls,ind,fat,vnd,ctv,cmp,ctc) VALUES ('$crt','$ano','$dta','$bls','$ind','$fat','$vnd','$ctv','$cmp','$ctc')";e agora está inserindo alguns campos0 0 "20/03/200 " "US$ " 0 "SR. ARI" 0 "LAERCIO F. SOUZA" Pelo que percebi, o problema está nas aspas que existem no arquivo texto separando os campos dos registros, como eu faço para retirá-las no código?GrataAndreia Regina

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!retirei as aspas simples e o espaço do insert:$sql = "INSERT into contrato (crt,ano,dta,bls,ind,fat,vnd,ctv,cmp,ctc) VALUES ('$crt','$ano','$dta','$bls','$ind','$fat','$vnd','$ctv','$cmp','$ctc')";e agora está inserindo alguns campos0 0 "20/03/200 " "US$ " 0 "SR. ARI" 0 "LAERCIO F. SOUZA" Pelo que percebi, o problema está nas aspas que existem no arquivo texto separando os campos dos registros, como eu faço para retirá-las no código?GrataAndreia Regina

Retirei quase todas as aspas ele ainda pega a primeira a última e não consegue pegar o primeiro campo que é 1 assume 0"1200220/03/2002NUS$N1261SR. ARI1034LAERCIO F. SOUZA""2200215/06/2002NR$N1034LAERCIO F. SOUZA698NELSON/VALDIR"Duplicate entry '0-2002' for key 1como posso resolver isto. Vou continuar tentando, pois estamos próximos ao resultado final positivo.Alguém pode ajudar???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal!

 

Graças à ajuda de vocês, à Giselly e ao livro Desenvolvendo Websites com PHP eu estou conseguindo finalizar este programa, mas ele ainda está criando um registro com dados 0 ( primeiro registro apenas os demais são criados normalmente. Vejam

 

crt ano dta bls ind fat vnd ctv cmp ctc

0 0 0 0

7 2002 23/06/2002 N R$ N 1034 FULANO SOUZA 1312 SR. FULANO

6 2002 23/06/2002 N R$ N 1312 SR. FULANO 1144

3 2002 17/06/2002 N R$ N 1034 FULANO SOUZA 995 SDFASD

2 2002 15/06/2002 N R$ N 1034 FULANO SOUZA 698 NELSON

1 2002 20/03/2002 N US$ N 1261 SR. ARI 1034 FULANO SOUZA

 

 

Agora o código está assim:

 

PHP [/tr][tr]

<?php

require_once('conexao.php');

 

$file = fopen ("contrato.txt", "r");

if(!$file)

{

echo "Não foi possível concluir essa ação no momento, Por favor, tente novamente mais tarde!";

}

while (!feof($file))

{

$line = fgets($file, 4096);

if (!ereg ("#", $line))

{

list ($crt, $ano, $dta, $bls, $ind, $fat, $vnd, $ctv, $cmp, $ctc) = explode (';', $line);

$crt = trim($crt);

$ano = trim($ano);

$dta = trim($dta);

$bls = trim($bls);

$ind = trim($ind);

$fat = trim($fat);

$vnd = trim($vnd );

$ctv = trim($ctv);

$cmp = trim($cmp);

$ctc = trim($ctc);

$sql = "INSERT into contrato (crt,ano,dta,bls,ind,fat,vnd,ctv,cmp,ctc) VALUES ('$crt','$ano','$dta','$bls','$ind','$fat','$vnd','$ctv','$cmp','$ctc')";

$resultado = mysql_query($sql) or die(mysql_error());

}//fechou o if (!ereg ("#", $line))

}//while (!feof($file))

if ($resultado)

{

echo "Dados copiados com sucesso!";

}

else

{

echo "Houve algum erro ao tentar copiar os dados!";

}

//echo $resultado;

//echo "Dados copiados com sucesso";

fclose ($file);

?>

[/tr]

 

Obrigadão pessoal http://forum.imasters.com.br/public/style_emoticons/default/hug.gif

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Andreia Regina

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se você já descobriu o q faz com que ainda gere um registro todo zerado, mas aqui vão 2 alternativas:1 - Registro já existia no BD (de uma inclusão anterior); ou2 - O seu arq TXT tem uma linha em branco no final (pode ter só um ENTER/CR).Sucesso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se você já descobriu o q faz com que ainda gere um registro todo zerado, mas aqui vão 2 alternativas:1 - Registro já existia no BD (de uma inclusão anterior); ou2 - O seu arq TXT tem uma linha em branco no final (pode ter só um ENTER/CR).Sucesso!

Obrigada pela ajuda cassabarbosa.Mas infelizmente não consegui descobrir o porque de criar este registro zerado. Editei o arquivo txt no word e realmente existe um "enter" após o último registro, como eu faço para retirá-lo???AtenciosamenteAndreia Regina

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.