Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas Em Ler Db Em Arquivo .txt(resolvido)


RicardoHFSP

Pergunta

Estou com dados de um DB em um arquivo .txt onde cada registro encontra-se em uma linha, com os seguintes campos: id,nome,sexo,endereco,bairro,cidade,UF,CEP,telefone,DataNascimento

O problema é que o txt está organizado da seguinte forma:(exemplo de uma linha)

-->0000009999 Fulano de Tal Masculino Rua dos Bobos 453 Belo Horizonte MG XXXXX-XXX 31-XXXXXXXX XX/XX/XXXX

sem uma identificação de cada campo antes dele o que poderia me facilitaria muito para poder detectar cada campo atraves até mesmo da função stristr().

De certa forma vejo uma saida para o problema pois o arquivo .txt esta bem organizado, pois cada id fica um debaixo do outro, assim como nome,sexo,endereço,etc. utilizando de espaços em branco para a organização. Mas quando coloco para ler esta linha o PHP some os espaços com mais de um espaço em branco seguido deixando apenas um espaço em branco.

Este codigo abaixo demonstra como estou fazendo, e ao buscar cada campo eu o pego na coluna em que ele aparece no arquivo .txt, mas o PHP bagunça tudo dentro da variavel $handle ao retirar os espaços em branco repetidos sucessivamente. Desta forma alinha que no .txt era:

-->(inicio na coluna 0)0000009999 (inicio na coluna 12)Fulano de Tal (inicio na coluna 48)Masculino

fica da seguinte forma:

-->0000009999 Fulano de Tal Masculino(sem espaços em branco repetidos entre cada campo quando necessario.)

<?$handle = fopen ("alunos.txt", "r");
$x=1;
while (!feof ($handle)) {
   $names = unpack ("a10id/x1/a37nome/x1/a12sexo", fgets($handle, 300)); // Ler 10, Pular 1, Ler 37, Pular 1, Ler 12 //
   echo $x."<br>";
   echo $names['id']."<br>";
   echo $names['nome']."<br>";
   echo $names['sexo']."<br>";
   $x++;
}
fclose ($handle);?>

alguém sabe como eu faço para que o comando $handle = fopen ("alunos.txt", "r"); a variável $handle possa ficar com os espaços em branco sucetivos para poder organizar minha DB?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Pessoal teintei de outra forma ler o arquivo .txt na sua íntegra, mas continua dando o mesm erro, vejam:

$alunos = @file('alunosacademia.txt');
//Conta quantas linhas tem o arquivo alunosacademia.txt
$qtd = "quantidade:".count($alunos,0);
echo $qtd."<br>";
echo "ID:".substr($alunos[1],0,10)."<br>";
echo "NOME:".substr($alunos[1],11,46)."<br>";
era para pegar somente o nome na linha echo "NOME:".substr($alunos[1],11,46)."<br>"; pois o nome no arquivo txt vai da coluna 11 até a coluna 46, mas ele imprime o sehuinte:
quantidade:259
ID:0000001418
NOME:FULANA DA SILVA Feminino 

o Feminino so deveria aparece entre as colunas 48 e 58, com isto dá pa ver que ele continua transformando os espaços em branco consecutivos em um único espaço.

alguém sabe com qual comando, ou função, ou gambiarra poderia fazer da forma que eu quero? Com todos os espaços em branco.

Preciso destes dados em minha DB segund agora, HELP galera...

Inté....

Link para o comentário
Compartilhar em outros sites

  • 0

Achei a resposta, utiliza a função fgetcsv(), veja abaixo:

$handle = fopen ("alunosacademia.txt", "r");
$x=0;
$alunos = @file('alunosacademia.txt');
//Conta quantas linhas tem o arquivo alunosacademia.txt
$qtd = "quantidade de registros:".count($alunos,0)."<br>";
echo $qtd;
while (!feof ($handle)) 
{
   $id = fgetcsv($handle, 11); 
   echo $id[0]."<BR>";
   $nome = fgetcsv($handle, 36);
   echo $nome[0]."<BR>";
   $sexo = fgetcsv($handle, 11);
   echo $sexo[0]."<BR>";
   $civil = fgetcsv($handle, 16);
   echo $civil[0]."<BR>";
   $endereco = fgetcsv($handle, 36);
   echo $endereco[0]."<BR>";
   $cidade = fgetcsv($handle, 16);
   echo $cidade[0]."<BR>";
   $uf = fgetcsv($handle, 2);
   echo $uf[0]."<BR>";
   $cep = fgetcsv($handle, 10);
   echo $cep[0]."<BR>";
   $dd1 = fgetcsv($handle, 2);
   echo $dd1[0]."<BR>";
   $telres = fgetcsv($handle, 12);
   echo $telres[0]."<BR>";
   $dd2 = fgetcsv($handle, 2);
   echo $dd2[0]."<BR>";
   $telcel = fgetcsv($handle, 11);
   echo $telcel[0]."<BR>";
   $datanasc = fgetcsv($handle, 12);
   echo $datanasc[0]."<BR>";
   $cic = fgetcsv($handle, 19);
   echo $cic[0]."<BR>";
   $rg = fgetcsv($handle, 20);
   echo $rg[0]."<BR>";
   echo "---------------------------------<br>";
}
fclose ($handle);

desta forma ele pega corretamente.

inté...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,6k
×
×
  • Criar Novo...