Ir para conteúdo

POWERED BY:

Arquivado

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

gilvanio

Como excluir uma linha de arquivo texto

Recommended Posts

Pessoal, estou com o seguinte problema: gravo em um arquivo txt, cujo nome eh produtos.txt, que tem quatro posicoes: codigo, tipo, descricao, estoque, delimitados pelo "|" pipe:

 

001|001|CARTUCHO LEXMARK E230|8

001|002|CARTUCHO LEXMARK E210|4

002|003|CARTUCHO HP 840|3

002|004|CARTUCHO HP 930|6

 

o que estou querendo fazer eh, ao efetuar uma solicitacao, de um desses suprimentos subtrair o valor existente pelo que solicitei e gravar o novo valor, exemplo:

 

antes da solicitacao

001|001|CARTUCHO LEXMARK E230|8

 

solicitei 1 unidade

deveria ficar assim:

001|001|CARTUCHO LEXMARK E230|7

 

consigo pegar a posicao do registro atraves de array e alterar, mas quando vou gravar nao grava naquela posicao grava na ultima linha!

 

Alguem teria alguma ideia, de ate mesmo apagar toda a ocorrencia e eu gravaria tudo com o novo valor na ultima linha!

 

Agradeco!!

gilvanio@eletshop.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, estou com o seguinte problema: gravo em um arquivo txt, cujo nome eh produtos.txt, que tem quatro posicoes: codigo, tipo, descricao, estoque, delimitados pelo "|" pipe:

 

001|001|CARTUCHO LEXMARK E230|8

001|002|CARTUCHO LEXMARK E210|4

002|003|CARTUCHO HP 840|3

002|004|CARTUCHO HP 930|6

 

o que estou querendo fazer eh, ao efetuar uma solicitacao, de um desses suprimentos subtrair o valor existente pelo que solicitei e gravar o novo valor, exemplo:

 

antes da solicitacao

001|001|CARTUCHO LEXMARK E230|8

 

solicitei 1 unidade

deveria ficar assim:

001|001|CARTUCHO LEXMARK E230|7

 

consigo pegar a posicao do registro atraves de array e alterar, mas quando vou gravar nao grava naquela posicao grava na ultima linha!

 

Alguem teria alguma ideia, de ate mesmo apagar toda a ocorrencia e eu gravaria tudo com o novo valor na ultima linha!

 

Agradeco!!

gilvanio@eletshop.com.br

Você quer ler o txt, subtrair o valor e gravar na mesma linha que ele estava, é isso?

 

Não seria mais facil você usar banco de dados??

Compartilhar este post


Link para o post
Compartilhar em outros sites

eh isso mesmo que eu quero, eh pegar a posição e gravar nela, sei também que com banco de dados seria mais fácil, mas infelizmente tenho que usar txt!você poderia me ajuda????

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem uma solução que você vai ter que estudar um pouco, que é usando regex. funcionaria da seguinte forma

 

//$txt contem [b]todo[/b] o conteudo do seu arquivo txt//$produto contém o nome do produto. por exemplo "CARTUCHO HP 840"//$estoque contém o novo estoque do produto citado acima$novoTXT = preg_replace('#(\d+)|(\d+)|('.$produto.')|(\d+)#m','\\1|\\2|\\3|'.$estoque,$txt);//agora #novoTXT contém e é so gravar de volta no txt

 

 

Bem, espero que funcione pois não tenho como testar aqui. Dessa forma você muda a linha sem ter que reposiciona-la. Caso de algum erro tente colocar um \ antes do | no meu código. Caso exista 2 produtos com o mesmo nome e você pegue o produto pelo código, substitua o primeiro \d+ por uma variável com o valor do código.

 

Dúvidas sobre regex?

 

Regex

Sintaxe de pattern

modificadores de pattern

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabyo, muitissimo obrigado pela ajuda, mas em nenhum momento pedi para você ou alguém fazer para mim, só pedi ajuda!Squitt, sua solução foi bem clara, muito obrigado. Em cima de sua explicação estou conseguindo fazer o que eu estava pretendendo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

consigo pegar a posicao do registro atraves de array e alterar, mas quando vou gravar nao grava naquela posicao grava na ultima linha!

 

só usar o array exemplo

 

$linhas[5] .= "001|001|CARTUCHO LEXMARK E230|7";

 

isso fara com que ele seja gravado na mesa linha que tava

 

você só precisa pegar a linha fazer a auteração e gravar

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.