Jump to content


Photo

Erro Ao Imprimir Dados Do Txt Na Tela


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

#1 ataide.neto

ataide.neto

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Masculino
  • Localidade:machado

Posted 17/02/2012, 16:08

Boa Tarde! Estou tentando exibir os dados de um arquivo TXT gerado pelo SGA. Sou iniciante em PHP mais consegui fazer ele ler o arquivo TXT e exibir alguns dados, o 1º ele mostra corretamente mais os outros ele mostra de maneira incorreta..

O Código que fiz:
<?php


$arquivo = fopen("PRODUTO.TXT","r");
while(!feof($arquivo)){
$texto = fread($arquivo, 40);//le 40 bytes do arquivo e armazena em $texto


$conta = 'referencia: '.substr($texto,0,14)."<br />".'cor: ' . substr($texto,15,3) ."<br />". ' tamanho: ' . substr($texto,18,2) ."<br />".'quantidade: '.substr($texto,20,6)."<br /> <br />";
echo $conta;
}

fclose($arquivo);


?>

O Arquivo é gerado que me é gerado pelo sistema SGA tem no total 25 caracteres dos quais os 15 primeiros são referentes a referencia depois 3 referente a cor, 2 refente a numeração e 5 referente ao estoque...

veja como fica o codigo compilado:
Posted Image

1º ele retorna os dados corretos, mais depois ele nao segue uma sequencia do arquivo. Veja abaixo um print de um pedaço do TXT que me é gerado:
Posted Image

Veja que selecionei os dois promeiros itens do TXT se verificarem irao ver que o 1º bate com o que o PHP retornou mais a partir do 2º nao deu certo.. Lembrando que quando o codigo é menor que os valores que eu passei acima ele preenche com espaços em branco, sempre totalizando 25 caracteres..

o que posso fazer pra corrigir isso??

Edição feita por: ataide.neto, 17/02/2012, 16:08.


#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 17/02/2012, 19:22

  • Parece que tem uma quebra de linha aí. Se tiver, use fgets() em vez de fread(). Fica melhor.
  • Se o registro tem 25 bytes, por que você está lendo 40?
  • A numeração nos substr() está errada. Fica assim:
$conta = 'referencia: '.substr($texto,0,15)."<br />".'cor: ' . substr($texto,15,3) ."<br />". ' tamanho: ' . substr($texto,18,2) ."<br />".'quantidade: '.substr($texto,20,5)."<br /> <br />";


#3 ataide.neto

ataide.neto

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Masculino
  • Localidade:machado

Posted 18/02/2012, 08:52

  • Parece que tem uma quebra de linha aí. Se tiver, use fgets() em vez de fread(). Fica melhor.
  • Se o registro tem 25 bytes, por que você está lendo 40?
  • A numeração nos substr() está errada. Fica assim:
$conta = 'referencia: '.substr($texto,0,15)."<br />".'cor: ' . substr($texto,15,3) ."<br />". ' tamanho: ' . substr($texto,18,2) ."<br />".'quantidade: '.substr($texto,20,5)."<br /> <br />";


Obrigado amigo! Consegui. veja como ficou:

<?php


$arquivo = fopen("PRODUTO.TXT","r");

$cont=0;
while(!feof($arquivo)){
$texto = fgets($arquivo, 4096);//le 40 bytes do arquivo e armazena em $texto


$conta = 'referencia: '.substr($texto,0,15)."<br />".'cor: ' . substr($texto,15,3) ."<br />". ' tamanho: ' . substr($texto,18,2) ."<br />".'quantidade: '.substr($texto,20,6)."<br /> <br />";
echo 'arquivo nr:'.$cont."<br/>";
echo $conta;
$cont++;
}

fclose($arquivo);


?>
Na verdade eu uso 6 no ultimo campo pois tem 1 espaço separando os caracteres...

Agora preciso pegar esses dados e atualizar os mesmos campos em no Banco de Dados. Minha ideia é armazenar cada valor retornado em uma variavel, fazer a verificação e atualizar, tudo dento do While, será que dá certo?

Edição feita por: ataide.neto, 18/02/2012, 08:54.


#4 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 18/02/2012, 09:44

Tem que dar.

#5 ataide.neto

ataide.neto

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Masculino
  • Localidade:machado

Posted 18/02/2012, 12:19

Pessoal, como e ja disse sou iniciante em php, e tem muita coisa que eu nao sei.. agora estou tentando atualizar o banco de Dados, a partir do que recebi do TXT mais nao da certo.. nao aparece nenhum erro, mais nao atualiza tbm...

<?php
include "conexao.php"; // Chama a conexao com o banco de dados

$arquivo = fopen("PRODUTO.TXT","r");

$cont=0;
while(!feof($arquivo)){
$texto = fgets($arquivo, 4096);//le 40 bytes do arquivo e armazena em $texto

$referencia = 'referencia: '.substr($texto,0,15)."<br />";
$cor = 'cor: ' . substr($texto,15,3) ."<br />";
$tamanho = ' tamanho: ' . substr($texto,18,2) ."<br />";
$quantidade = 'quantidade: '.substr($texto,20,6)."<br /> <br />";

echo $referencia;
echo $cor;
echo $tamanho;
echo $quantidade;
$cont++;

/*BANCO DE DADOS*/

$sql = "SELECT * FROM isc_products WHERE prodcode='$referencia'";
$resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");

while ($linha=mysql_fetch_array($resultado)) {


$sql = "UPDATE isc_products SET prodname='$cor' WHERE prodcode='$referencia'";
$resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");

		
}

}

fclose($arquivo);
?>

no caso eu coloquei prodname recebendo cor apenas como um teste... o que esta errado

Pessoal, como e ja disse sou iniciante em php, e tem muita coisa que eu nao sei.. agora estou tentando atualizar o banco de Dados, a partir do que recebi do TXT mais nao da certo.. nao aparece nenhum erro, mais nao atualiza tbm...

<?php
include "conexao.php"; // Chama a conexao com o banco de dados

$arquivo = fopen("PRODUTO.TXT","r");

$cont=0;
while(!feof($arquivo)){
$texto = fgets($arquivo, 4096);//le 40 bytes do arquivo e armazena em $texto

$referencia = 'referencia: '.substr($texto,0,15)."<br />";
$cor = 'cor: ' . substr($texto,15,3) ."<br />";
$tamanho = ' tamanho: ' . substr($texto,18,2) ."<br />";
$quantidade = 'quantidade: '.substr($texto,20,6)."<br /> <br />";

echo $referencia;
echo $cor;
echo $tamanho;
echo $quantidade;
$cont++;

/*BANCO DE DADOS*/

$sql = "SELECT * FROM isc_products WHERE prodcode='$referencia'";
$resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");

while ($linha=mysql_fetch_array($resultado)) {


$sql = "UPDATE isc_products SET prodname='$cor' WHERE prodcode='$referencia'";
$resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");

		
}

}

fclose($arquivo);
?>

no caso eu coloquei prodname recebendo cor apenas como um teste... o que esta errado


Ja consegui!

Edição feita por: ataide.neto, 18/02/2012, 12:11.





1 user(s) are reading this topic

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

IPB Skin By Virteq