Ir para conteúdo

POWERED BY:

Arquivado

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

Evandro Araujo 2

Usando TXT como banco de dados

Recommended Posts

Boa tarde gente!

 

Tenho um problema um pouco complicado, sou iniciante em PHP, e preciso fazer uma coisa:

Tenho um arquivo .txt que deve funcionar como se fosse um banco de dados;

Eu já escrevo novas linhas e recupero uma linha específica;

Agora, só preciso de pegar uma parte específica da linha, por exemplo:

A estrutura do arquivo txt é esta:

ABCD1234:NOME_USUARIO=FulanoDeTal#SENHA=abc123#DATA_CADASTRO=DataDeCadastro#NIVEL_ACESSO=3

onde 'ABCD1234' identifica a linha.

 

Agora, quando eu fazer a URL usando GET assim:

returnData.php?line=ABDC1234&column=NOME_USUARIO

ele me retornar o nome do usuário apenas. o resultado seria: FulanoDeTal

 

Sei que parece meio estranho o que estou fazendo, mas se os amigos me ajudarem, fico muito grato.

Quanto a sugestões de uso de banco de dados, esta hipótese está descartada.

 

Obrigado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara eu acho melhor você trabalhar com ini , txt tem ate como fazer ..

porem você vai ter que trabalhar com loop pra chegar o resultado que você quer ..

 

<?php 
$arq = fopen ( 'a.txt' , "r" ); 
 while (! feof ( $arq )) 
  { 
    $linhas [] = fgets ( $arq , 4096 ); 
    print_r($linhas);
  } 
?>

 

minha saida

Array ( [0] => andrey ) Array ( [0] => andrey [1] => knupp ) Array ( [0] => andrey [1] => knupp [2] => vital )

 

Meu txt tinha apenas

andrey
knupp
vital

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não acho muito bom usar um txt como banco de dados, pode até trabalhar com ini como o AndreyKnupp falou mas como você é iniciante é bom praticar.

 

tente fazer algo parecido:

 

$str = "ABCD1234#NOME_USUARIO=FulanoDeTal#SENHA=abc123#DATA_CADASTRO=DataDeCadastro#NIVEL_ACESSO=3";

 

$array = explode("\n", $str);

 

depois usa o count para determinar o número de elementos que tem no array.

 

depois um for

for($n = 0 ; $i <= (count($array)); i++){

$array2 = explode("#", $array);

if($array2[0] == $_GET['line']){

$i = (count($array));

$array3 = explode("=" , $array2[1]);

echo $array3[1];// $array3[0] = NOME_USUARIO $array3[1] = Valor de NOME_USUARIO

$i = (count($array));

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

estava lendo sobre o parse_ini_file(), mas pelo que entendi só dá pra recuperar as informações do arquivo.

existe alguma outra função pra modificar o arquivo?

para um valor de uma chave especifica e pra adicionar novas chaves?

 

estou trabalhando na proposta do Daniel, mas o uso de arquivos INI, como proposto pelo Andrey me parece mais prática.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já que você quer trabalhar com arquivos texto em vez de um banco de dados de verdade, mesmo estando sujeito a vários problemas, você pode implementar a interface Serializable para salvar o objeto inteiro no arquivo texto e recuperá-lo posteriormente.

 

Para as buscas, você pode fazer buscas binárias em uma BST ou uma AVL, contudo prefira utilizar um SGDB em vez de um arquivo texto, você ganhará em desempenho e não terá que implementar dispositivos de segurança para proteger seu arquivo texto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei uma função http://stackoverflow.com/questions/1268378/create-ini-file-write-values-in-php

 

 

 

Esse script substitui a senha:

 

<?php
include('f.php');
$newpass = $_GET['newpass'];
$file = parse_ini_file('1.ini',true);

echo "SENHA ANTIGA:".$file['ABCD1234']['senha'] ;
$file['ABCD1234']['senha'] = $newpass ;
echo "<BR>SENHA NOVA:".$newpass ;
write_ini_file($file, '1.ini', true);

?>

 

 

Existe também o SQLite, uma extensão que usa txt como banco de dados.

 

 

Voltando para o script que fiz no primeiro post fiz outro sem erros:

 

<?php

$line = $_GET['line'];

$str = "ABCD1234#NOME_USUARIO=FulanoDeTal#SENHA=abc123#DATA_CADASTRO=DataDeCadastro#NIVEL_ACESSO=3";

 

$array = explode("\n", $str);

$n = count($array);

for ($i = 0; $i <= $n; $i++)

{

if($i == $n){

echo "Não foi encontrado resultados";

break;

}

$array2 = explode("#", $array[$i]);

if($array2[0] == $line){

$i = $n;

$array3 = explode("=" , $array2[1]);

echo $array3[1];// $array3[0] = NOME_USUARIO $array3[1] = Valor de NOME_USUARIO

break;

}

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

agradeço muito a ajuda de todos, estou estudando e tentando adaptar cada uma das propostas.

logo volto com alguma conclusão.

já entendia um pouco de Java, e por isso não estou tendo tantas dificuldades em entender o que todos estão dizendo.

 

obrigado.

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.