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

Trabalhando Com Txt


doulo4ever

Pergunta

galera, para mostrar os dados de um txt....o que é mais recomendado?

usar:

foreach ($arquivo as $comentario) {

ou

for ($i=0; $i <= 4; $i++){

$linha = $arquivo[$i];

existe alguma diferença de eficácia ou algo entre essas duas formas? qual o mais usado?

mais uma coisa...estou fazendo alguns testes primeiro aqui utilizando base txt, mas como faço para apagar uma linha dos dados? estou fazendo assim para mostrar os dados:

  echo "<br>Últimos 5 Comentários:<br><br>";

  echo "<table>";

  for ($i=0; $i <= 4; $i++){

  $linha = $arquivo[$i];

  $posts = explode('###', $linha);

  if($i%2==0){

  echo "<tr><td bgcolor=#f0f0f0>";

  echo "<b>Número:</b>&nbsp;$i";

  echo "<b>Data:</b>&nbsp;".date("d/m/Y, g:i A", $posts[0])."";

  echo "<b>Nome:</b>&nbsp;".$posts[1];

  echo "<b>Msg:</b>&nbsp;".$posts[2];

  echo "</td></tr>";

  }else{

  echo "<tr><td bgcolor=#f9f9f9>";

  echo "<b>Número:</b>&nbsp;$i";

  echo "<b>Data:</b>&nbsp;".date("d/m/Y, g:i A", $posts[0])."";

  echo "<b>Nome:</b>&nbsp;".$posts[1];

  echo "<b>Msg:</b>&nbsp;".$posts[2];

  echo "</td></tr>";

  }

}echo "</table>";

como faço para mostrar um link na frente de cada cadastro "apagar comentário", e se eu clicar, aquela determinada linha seja apagada? tem alguém aqui que entende bem de base txt?

optei por usar txt em algumas coisas aqui porque em sql ía deixar muito pesado meu banco de dados!...mas será que é confiável? até quantos registros será que vai ler certinho sem dar pau?

vlw, falou

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Bom...

Eu sempre prefiro o foreach e uso sempre que posso. Mas não deve haver muita diferença de performace. Mas tem casos em que saber usar o foreach pode salvar a sua pele. Principalmente quando a array não tem índices numéricos.

Sobre o esquema do txt, cara, é complicado fazer isso que você quer.

Acho que você teria que pegar todo esse seu arquivo, dividir por linhas, deletar a linha que você não quer mais e salvar por cima...

Se você tiver tentado alguma coisa em termos de código, posta aí pra gente analizar...

Link para o comentário
Compartilhar em outros sites

  • 0

Fala error, eu tentei sim fazer algumas coisas aqui mas nem deu muito certo!

Tentei o seguinte:

if($acao == 'apagar'){

$linha = $_GET["linha"];

array_splice($arquivo,$linha,1);

  foreach($arquivo as $v){

    fwrite($abre,$v);

  }

}

echo "<br>Últimos 5 Comentários:<br><br>";

  echo "<table>";

  for ($i=0; $i <= 4; $i++){

  $linha = $arquivo[$i];

  $posts = explode('###', $linha);

  if($i%2==0){

  echo "<tr><td bgcolor=#f0f0f0>";

  echo "<b>Número:</b>&nbsp;$i";

  echo "<b>Data:</b>&nbsp;".date("d/m/Y, g:i A", $posts[0])."";

  echo "<b>Nome:</b>&nbsp;".$posts[1];

  echo "<b>Msg:</b>&nbsp;".$posts[2];

  echo "<b><a href=post_comentario.php?acao=apagar&linha=$i>Apagar Comentário</a></b>";

  echo "</td></tr>";

  }else{

  echo "<tr><td bgcolor=#f9f9f9>";

  echo "<b>Número:</b>&nbsp;$i";

  echo "<b>Data:</b>&nbsp;".date("d/m/Y, g:i A", $posts[0])."";

  echo "<b>Nome:</b>&nbsp;".$posts[1];

  echo "<b>Msg:</b>&nbsp;".$posts[2];

  echo "<b><a href=post_comentario.php?acao=apagar&linha=$i>Apagar Comentário</a></b>";

  echo "</td></tr>";

  }

}echo "</table>";

Não deu muito certo!

Se puder me ajudar agradeço

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - Gomes -

doulo4ever,

Muito interessante essa sua solução para mostrar os comentarios, mas tem um pequeno problema.

Para apagar uma linha voce tem duas alternativas:

- Reescrever o arquivo sem a linha indesejada e depois renomeá-lo para o arquivo antigo.

- Abrir o arquivo como "r+" , pois dá a possibilidade de leitura e escrita... (método que exige mais conhecimentos).

Só que eu fiquei com algumasa dúvidas, cada comentario ocupa uma linha somente?

Tem limite de caracter por comentario?

Ex: se eu colocar um livro autobiografico você aceita e escreve tudo isso num linha só???

se eu colocar um \n (quebra de linha) e voce for apagar, levará em consideração que eu pulei linha????

Seria interessante pensar em todas essas regras para não ser pego de surpresa.

Espero ter ajudado.

Até + sad.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Fala Gomes...

O que eu tentei fazer com o código:

if($acao == 'apagar'){

$linha = $_GET["linha"];

array_splice($arquivo,$linha,1);

  foreach($arquivo as $v){

    fwrite($abre,$v);

  }

}

Foi retirar a linha "$linha" do arquivo e reescrever no arquivo as linhas novamente!

Estou abrindo o arquivo no método "r" e não no "r+", será que tem alguma coisa a ver com o não sucesso da operação? vou tentar!

Não tem limite o comentário e fica tudo na mesma linha sim mesmo que chegue algum espertinho e digite \n , já fiz alguns testes à respeito disso pois já tinha pensado nessa possibilidade e ainda por cima fiz um replace na hora de gravar para a assegurar mais ainda!

Não deu muito certo minha tentativa de apagar a linha especificada, vou tentar de outra forma! Se tiver alguma sugestão, agradeço!

falou

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - Gomes -

Vamos lá

Estou abrindo o arquivo no método "r" e não no "r+", será que tem alguma coisa a ver com o não sucesso da operação? vou tentar!

O que acontece é o seguinte:

No método "r" , ele só lê o arquivo, não é possível escrever nada... nem mesmo apagar (tipico de escrita);

Mais crie um novo arquivo sem a linha que voce quis apagar e renomeie para o arq antigo... menos ddC (dor de Cabeça)...

Até +

Link para o comentário
Compartilhar em outros sites

  • 0

Peraí, pessoal; vamos com calma...

Essa sua variável $_GET['linha'] está vindo com um valor numérico, certo?

E pra pegar o conteúdo do arquivo, por linhas, dê uma olhada nas seguintes funções:

-http://br.php.net/manual/pt_BR/function.file.php

-http://br.php.net/manual/pt_BR/function.fi...et_contents.php

-http://br.php.net/manual/pt_BR/function.explode.php

Eu pegaria o conteúdo do arquivo usando a file() ou a combinação das outras 2, então faria o slice que você fez ali.

Então, abriria o arquivo com "w", o que truncaria o seu tamanho para 0, resetando todo o seu valor, então começaria a gravar tudo com o fwrite.

Acho que você está no caminho certo. Tente fazer como eu sugeri.

Qualquer problema ou dúvida, é só postar... wink.gif

ps: dê também uma olhada nos tipos de permissão de abertura de cursores de arquivo: http://br.php.net/manual/pt_BR/function.fopen.php smile.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Yessssssss!

Error, eu já tava abrindo com file(), é que eu não postei o código inteiro!

To gostando de mexer com txt, dá pra fazer artas coisas mirabolantes usando txt também! E fica muito mais leve!

Pensei que ía ser mais difícil! Já ELVISSSSSS!

Olha como ficou:

if($acao == 'apagar'){

$abre = fopen("$caminho", "w");

$linha = $_GET["linha"];

array_splice($arquivo,$linha,1);

  foreach($arquivo as $v){

    fwrite($abre,$v);

  }

fclose ($abre);

}

Ele apaga exatamente a linha de número "$linha"!

Falouuu, valeu pela força!!

Abraços!

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,2k
×
×
  • Criar Novo...