gilvanio 0 Denunciar post Postado Janeiro 12, 2006 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
travado 0 Denunciar post Postado Janeiro 12, 2006 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
gilvanio 0 Denunciar post Postado Janeiro 12, 2006 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
Fabyo 66 Denunciar post Postado Janeiro 12, 2006 é só você ler o txt e ignorar a linha que você quer e gravar o txt sem essa linha Compartilhar este post Link para o post Compartilhar em outros sites
gilvanio 0 Denunciar post Postado Janeiro 13, 2006 Alguém poderia me ajudar??????? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 13, 2006 você quer que alguem faça pra você? eu ja expliquei a ideia é você ler todo conteudo dentro do loop ignorando a linha que você quer e salvar o txt novamente Compartilhar este post Link para o post Compartilhar em outros sites
Squitt 0 Denunciar post Postado Janeiro 13, 2006 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
gilvanio 0 Denunciar post Postado Janeiro 13, 2006 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
Fabyo 66 Denunciar post Postado Janeiro 13, 2006 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