Ir para conteúdo

Arquivado

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

giselly

Atualizar dados da tabela com txt

Recommended Posts

Participo a pouco tempo desse fórum, mas o suficiente para perceber que aqui tem muitos "feras".Se alguém puder me ajudar eu agradeço muuuiiitttoo!Eu tenho um sistema que cadastra alunos e atividades desenvolvidas que são consultadas via site. Preciso implementar uma integração com um sistema de catraca na portaria do colégio que gera um arquivo txt conforme o exemplo:010 18/10/03 18:15 0000000001 01011 18/10/03 23:15 0000000001 02 O QUE SIGNIFICA:010 = PASSAGEM EFETUADA NO SENTIDO ENTRADA011 = PASSAGEM EFETUADA NO SENTIDO SAÍDA18/10/03 = DATA QUE EFETUADA A PASSAGEM18:15 = HORÁRIO QUE FOI EFETUADA A PASSAGEM0000000001 = NÚMERO DA CARTEIRINHA DO ALUNO01= NÚMERO DA CATRACA QUE FOI EFETUADA A PASSAGEM, PODE VARIAR DE 01 ATÉ 32A minha dúvida é a seguinte:Como ler esse txt e atualizar a tabela? Seria assim: ler o número da carteirinha, selecionar da tabela "alunos" o nome do aluno da carteirinha e gravar em "frequencia" as outras informações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

abrindo e lendo um txt:

<?// 010 18/10/03 18:15 0000000001 01$caminho = "arquivo.txt";$txt = fopen($caminho,"r");while($l = fgetss($fp,1024)){echo $l;echo ""}?>

tendo o valor de cada linha basta usar o explode():

<?$teste = "010 18/10/03 18:15 0000000001 01";$vetor = explode($teste," ");echo "passagem: ".$vetor[0]."";echo "dia: ".$vetor[1]."";echo "hora: ".$vetor[2]."";echo "carteirinha: ".$vetor[3]."";echo "catraca: ".$vetor[4]."";?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse modelo aí, quando o arquivo ficar grande a aplicação vai ficar muito pesada e passível de erro! Pois você terá de carregar todo o arquivo para memória toda a vez que for atualizar qualquer coisa.Por que não usar um banco de dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse modelo aí, quando o arquivo ficar grande a aplicação vai ficar muito pesada e passível de erro! Pois você terá de carregar todo o arquivo para memória toda a vez que for atualizar qualquer coisa.Por que não usar um banco de dados?

você tem razão, mas acho que a catraca deve ter um sistema pronto que "gera" um txt, daí não tem jeito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço a ajuda, pessoal, quanto ao sistema, ele é pronto e gera esse txt. Todo dia seria gerado esse arquivo com as informações daquele dia, ou seja só seria acrescentado esses dados a tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hunmm... Entxão nesse caso, fazer um script que pegue os dados do txt e alimente o banco de dados é bem mais simples do que manipular diretamente em arquivo texto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comando pronto não. Mas não é díficil de implementar não...Você lê o arquivo inteiro e põe em uma variável... daí sai usando explode... pra separar por linha, por espaço.. por ai vai!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou abrindo o arquivo, separando as linhas, gravando na tabela, mas preciso "deletar" os arquivos do txt depois de fazer tudo isso. Tentei deletar o arquivo com unlink(), mas ou dá um erro de permissão ou não acontece nada. Para mim, se deletasse apenas os dados do txt seria ótimo.Alguém pode me ajudar?Meu código está assim:<?$file = fopen($arquivo_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, 50);if (!ereg ("#", $line)) {list ($sentido, $data ,$hora , $n_carteirinha, $n_catraca) = explode (' ', $line);$sentido = trim($sentido);$data = trim($data);$hora = trim($hora);$n_carteirinha = trim($n_carteirinha );$n_catraca = trim($n_catraca); $sql= "INSERT into frequencia (fq_id,fq_sentido,fq_data,fq_hora,fq_n_carteirinha,fq_n_catraca) VALUES ('null','$sentido', '$data' ,'$hora' , '$n_carteirinha', '$n_catraca')"; $resultado= mysql_query($sql); } } echo "Dados copiados com sucesso";fclose ($file);unlink($arquivo_TXT);?>O erro que sá é o seguinte:como está não dá erro, mas tb não deleta o arquivo depois de gravar na base.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você quer deletar o arquivo ou os dados do arquivo ?se quer deletar o arquivo a fun´ção é a unlink() mesmo ... mas tem q dar permisao no arquivo antes (veja chmod()), se você quer deletar so o conteudo do arquivo .. você pode ir dando replace nas linhas por "" ... sakou ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

gostaria de deletar apenas os dados, mas como dou replace automaticamente?Quanto a permissão, acho que não é necessário pois o arquivo é local (upload).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, eu não entendi porque você precisa apagar o arquivo... mas tudo bem.

 

E se você tentar "regravar" a linha do arquivo com brancos, por mais idiota que seja pode ser uma solução, mas continuo não vendo porque.

 

Veja fwrite em http://br.php.net

 

só não esqueça que seu arquivo não poderá mais ser aberto só para leitura "r"

Compartilhar este post


Link para o post
Compartilhar em outros sites

você quer deletar o arquivo ou os dados do arquivo ?se quer deletar o arquivo a fun´ção é a unlink() mesmo ... mas tem q dar permisao no arquivo antes (veja chmod()), se você quer deletar so o conteudo do arquivo .. você pode ir dando replace nas linhas por "" ... sakou ?

é...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae vai algumas dicas de manipulação de arquivos:

 

file() //Cria um array com o conteúdo do arquivo, onde cada índice é corresponde à linha do arquivo(começando por 0, claro)

 

fopen() = //abre o aquivo ex:

$aquivo = fopen('meu.txt', 'w') //se não existir o arquivo, ele cria, se existir, apaga o conteúdo. Use para apagar o conteudo do arquivo no final do dia

 

 

<?php[B]//para procurar por um determinado 'registro'[/B]$arquivo = file('meu.txt');for($i=0; i<sizeof($arquivo); i++) {  list($sentido, $data, $hora, $carteira, $catraca) = split(' ', $arquivo[$i]);  if($carteira == $resgistro_de_procura) {    // códigos...    // códigos...  } //fecha if} //fecha for[B]//para escrever um registro[/B]$txt = 'meu.txt';$ponteiro = fopen($txt, 'a'); //abre o arquivo e posiciona o 'ponteiro' no final fwhite($ponteiro, "010 18/10/03 18:15 0000000001 01\n");//fwhite($ponteiro, "$newsetido $newdata $newhora $newcarteira $newcatraca\n");fclose($ponteiro);[B]//para deletar o CONTEÚDO do arquivo[/B]$txt = 'meu.txt';$ponteiro = fopen($txt, 'w'); //apaga o conteúdo...fclose($ponteiro);[B]//para modificar um 'registro'[/B]//aqui é complicado!$arquivo = file('meu.txt');$txt = 'meu.txt';$ponteiro = fopen($txt, 'w'); //apaga o conteúdo...for($i=0; i<sizeof($arquivo); i++) {  list($sentido, $data, $hora, $carteira, $catraca) = split(' ', $arquivo[$i]);  if($carteira == $resgistro_de_procura) {    fwrite($ponteiro, "$newsentido $newdata $newhora $carteira $newcatraca\n");    //coloque aqui os códigos de atualização  }  else {    fwhite($ponteiro, $arquivo[$i]);  }} //fecha forfclose($ponteiro);?>

Com isso, é possivel fazer muitas coisas num arquivo texto...

Repare que você pode usar um bloco de cada vez, e modicar tudo para atender às suas necessidades!

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.