Ir para conteúdo

POWERED BY:

Arquivado

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

red_sonja

fopen r+

Recommended Posts

Ois de novo! :unsure: Bom, estou com mais um problema:estou usando um código para abrir e gravar dados num arquivo, só que eu quero que eles sejam inseridos assim:3ª inserção2ª inserção1ª inserçãoresumindo, colocar o ponteiro no início do arquivo no fopen. Eu sei que dá pra fazer isso com o r+, então fiz.Só que a cada inserção nova, ele apaga as outras anteriores!!!O que será que pode ser??? :wacko: :wacko: :wacko: PS - o código

if (!$abrir = fopen($arquivo, "r+")) {        echo  "Erro abrindo arquivo ($arquivo)";        exit;    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode parecer incrivelmente estranho, mas o r+ coloca o ponteiro no início do meu arquivo, e o a+ coloca o ponteiro no final...

 

o problema é q qdo uso o r+ continua dando o mesmo problema(apagando as linhas)

e qdo uso a+ dá certo, só que coloca o ponteiro no final do arquivo, e fica ao contrário do que eu quero...

veja você mesmo:

 

Para inserir um texto no arquivo:

Formulário de Postagem

 

Para ver o que tem no arquivo:

Arquivo de texto

 

Recomendo fazer duas inserções...

 

q estranho, parece q tá tudo ao contrário!!! :wacko: :wacko: :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

é estranho o r+ não dar certo...será que não é aqueles esquemas de colcar o b ou t na frente...por ex. "rb+"?.....tenta ver na referencia (http://br.php.net/manual/pt_BR/function.fopen.php) mais alguma coisa...senão faz uma "gambiarrinha" (não te recomendo isso ta!):1 - Você abre o txt como leitura "r"2 - Le seu conteudo com fread()3 - Concatena com o que você quiser4 - Feche e Abra novamento o txt5 - E coloca seu texto inteiro..concatenadoé meio feio mas acho que da sim....Bom, ja era pra ter funcionado com o comando "r+", mas...t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

e você pode me ajudar com a "gambiarra"??? é pq realmente eu não sei o q está acontecendo...eu sou iniciante no php e ainda não sei lidar direito com tudo... isso de concatenar complicou um pouco minha cabeça... você pode me ajudar com o código? ou me dar um exemplo que faz isso q você me falou no post acima?obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

nãoele tá colocando o ponteiro na parte de cima do arquivo (com r+,,,), até aí tudo bemsó que cada vez que eu insiro algo novo, ele apaga o inserido anterior!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele paga só o ultimo!!! hummmm....Abre o arquivo le todo o conteúdo, armazena temporariamente, depois quando for salvar, salva td de uma vez... (apesar q se fizer isso com arquivos grandes não é mto bom!!! :huh) ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo...concatenar=juntar seus posts

 

Por exemplo...

 

- você le e joga o seu txt numa variável ($posts)

- joga seu novo post numa outra variável ($newpost)

- dai você cocatena:

$post.=$newpost; //você pode usar para pular linha tbm colocando um <br> ou um \n na grente do $newpost

 

Qq duvida entre em contato novamente...ok!?

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por mais que eu tente, não dá certo!!!

O cursor fica na parte de cima, mas continua apagando a linha de baixo!!!

 

olha só o código:

 

PHP [/tr][tr]

<?

include 'form_post.html';

 

//PEGA OS DADOS ENVIADOS PELO FORMULÁRIO

$newpost = $_POST["txt_post"];

$data = date("d/m/Y - H:i");

 

//PREPARA O CONTEÚDO A SER GRAVADO

$conteudo="$newpost,$data\r\n";

 

//ARQUIVO TXT

$arquivo = "teste_blog.txt";

 

//TENTA ABRIR O ARQUIVO TXT

if (!$abrir = fopen($arquivo, "r+")) {

echo "Erro abrindo arquivo ($arquivo)";

exit;

}

 

//JOGA O CONTEÚDO DO ARQUIVO NUMA STRING

$posts = $_GET['$arquivo'];

 

//CONCATENA TUDO - Q CHIK

 

$conteudo.=$posts;

 

//ESCREVE NO ARQUIVO TXT

if (!fwrite($abrir, $conteudo)) {

print "Erro escrevendo no arquivo ($arquivo)";

exit;

}

 

echo "Arquivo gravado com Sucesso !!";

//FECHA O ARQUIVO

fclose($abrir);

?>

[/tr]

 

Eu não sei mais o que fazer... :wacko: :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta com esse código:

 

PHP [/tr][tr]

<?

include 'form_post.html';

 

//PEGA OS DADOS ENVIADOS PELO FORMULÁRIO

$newpost = $_POST["txt_post"];

$data = date("d/m/Y - H:i");

 

//PREPARA O CONTEÚDO A SER GRAVADO

$conteudo="$newpost,$data\r\n";

 

//ARQUIVO TXT

$arquivo = "teste_blog.txt";

 

//TENTA ABRIR O ARQUIVO TXT

if (!$abrir = fopen($arquivo, "r+")) {

echo "Erro abrindo arquivo ($arquivo)";

exit();

}else{

$posts=fread($abrir, filesize ($arquivo));

 

//CONCATENA TUDO - Q CHIK

 

$conteudo.=$posts;

 

//ESCREVE NO ARQUIVO TXT

if (!fwrite($abrir, $conteudo)) {

print "Erro escrevendo no arquivo ($arquivo)";

exit;

}else{

echo "Arquivo gravado com Sucesso !!";

//FECHA O ARQUIVO

fclose($abrir);

}

}

?>

[/tr]

 

Vamos ver se agora vai...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Código: (Só adaptei seu código!!! ;) )

PHP [/tr][tr]<?php

//PEGA OS DADOS ENVIADOS PELO FORMULÁRIO

$newpost = "5MSP";

$data = date("d/m/Y - H:i");

 

//PREPARA O CONTEÚDO A SER GRAVADO

$conteudo="\r\n$newpost,$data";

 

//ARQUIVO TXT

$arquivo = "teste_blog.txt";

 

//TENTA ABRIR O ARQUIVO TXT

if (!$abrir = fopen($arquivo, "r+")) {

echo "Erro abrindo arquivo ($arquivo)";

exit();

}else{

$posts=fread($abrir, filesize ($arquivo));

 

 

//ESCREVE NO ARQUIVO TXT

if (!fwrite($abrir, $conteudo)) {

print "Erro escrevendo no arquivo ($arquivo)";

exit;

}else{

echo "Arquivo gravado com Sucesso !!";

//FECHA O ARQUIVO

fclose($abrir);

}

}

?>

[/tr]

 

Resultado:

1MSP,22/12/2004 - 09:522MSP,22/12/2004 - 09:523MSP,22/12/2004 - 09:524MSP,22/12/2004 - 09:525MSP,22/12/2004 - 09:52

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom...olhao que eu fiz.......fiz o teste e deu certo...

 

PHP [/tr][tr]

<?

$new_post=$_POST["new_post"];

$arquivo="teste_blog.txt";

 

if($abre=fopen($arquivo,"r")){

$old_post=fread($abre,filesize($arquivo));

fclose($abre);

$conteudo=$new_post."\r\n".$old_post;

if($abre=fopen($arquivo,"w+")){

if(fwrite($abre, $conteudo)){

echo "Arquivo gerado com sucesso!";

fclose($abre);

}else{

echo "Não foi possível incluir novo post!";

}

}else{

echo "Erro ao abrir arquivo para escrita!";

}

}else{

echo "Erro ao abrir arquivo para leitura!";

}

?>

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa quantas respostas obrigada meninos!!!

 

Bom, o código do Arzandi não deu certo... o do michelsp faz o mesmo que o meu primeiro código: insere os posts na ordem. Só que o que eu queria é q a ordem ficasse 3/2/1 e não 1/2/3...

 

mas acabei resolvendo meu problema de outra forma... "comprei" um host com banco de dados ilimitado... e vou usar o "TheBlog" para o que eu quero...

 

Aproveitando para fazer uma propaganda: O sistema melhor e mais simples que eu já vi! E além de tudo é em português! Vale a pena experimentar...

Para quem quiser dar uma olhada, o endereço é :TheBlog

 

Agradeço a todos que me ajudaram nessa "árdua" tarefa... porque a cada dia que posto aqui, aprendo muito mais... obrigada a todos vocês que fazem o imasters cada dia melhor! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom red_sonja...legal...você poderia me falar o erro que deu no meu código?...pq eu fiz aqui na minha máquina e está tudo okSó pra tirar uma duvida..talvez seja a nossa máquina[]'s

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.