Jump to content


Photo

Função Fwrite()


  • Faça o login para participar
6 replies to this topic

#1 screenshotx

screenshotx

    12 Horas

  • Usuários
  • 153 posts
  • Sexo:Não informado

Posted 17/09/2007, 12:35

Boa tarde pessoal..

estou usando a função fwrite() gravar dados num arquivo texto..

Blz, a primeira vez que eu rodo, ele grava certinho..

Qdo eu rodo de novo, ele grava EMBAIXO do que ja estava escrito o texto NOVO

Mas o que eu quero, é que SUBSTITUA o texto antigo, e não que grave embaixo dele..entende?

Muito brigado desde já!
abraços
Iniciante em PHP/MySQL.

"Ter problemas na vida é inevitável, mas ser derrotado por eles é opcional."

#2 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

Posted 17/09/2007, 12:41

O problema não está na função "fwrite()" e sim na função "fopen()", pois que vai definir de que forma o texto será gravado é o parametros "r", "r+", "a", "a+", "w", "w+", "x", "x+" ....

Para o seu caso é aconselhavel o uso do "w" ou "w+":
$fp = fopen("arquivo.txt", "w+");

Veja a Tabela:
http://br.php.net/fopen

#3 screenshotx

screenshotx

    12 Horas

  • Usuários
  • 153 posts
  • Sexo:Não informado

Posted 17/09/2007, 13:38

Ah sim, entendi, é o "fopen" mesmo..

estou usando o parametro "a".. mas troquei para o "w" e "w+", mas não deu certo..

usando o "a" ele inseria todos os registros do while.. já com o "w" ele gravou no txt só 1 registro..
Porque isso?

Valeu!!
Iniciante em PHP/MySQL.

"Ter problemas na vida é inevitável, mas ser derrotado por eles é opcional."

#4 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

Posted 17/09/2007, 13:56

Eu não entendi se você conseguiu ou como está gravando, como assim com "while"? - Tipo assim:

while (true) { fwrite($fp, $valor_while); }

A diferença entre o "a" e o "w" é a seguinte:
a - abre o arquivo só para escrita e coloca o ponteiro no final do arquivo, ou seja se o arquivo já possuir alguns texto ou falor e deixa o que já existir intacto e começara a escrever a partir do final.

w - abre o arquivo para a escrita mas ao contrario do "a" ele apaga todo o texto do arquivo e coloca o ponteiro de gravação no começo e começa escrever como se o arquvo estivesse limpo.

* Mas isso está escrito no manual do PHP ....

#5 screenshotx

screenshotx

    12 Horas

  • Usuários
  • 153 posts
  • Sexo:Não informado

Posted 17/09/2007, 14:10

Sim.. então eu entendi.. mas não está dando certo..

Por exemplo.. estou fazendo um SELECT na tabela..
O resultado deste select jogo no while "while($row = ifx_fetch_row($result))"
O resultado seria por exemplo:

"TEXTO1;
TEXTO2;
TEXTO3;
TEXTO4;"

Isso que ele grava quando eu uso o parametro "a".

Agora quando eu troco pelo "w", ele grava somente assim, por exemplo:

"TEXTO1"

entendeu? ele grava só o 1 resultado do select..

Valeu
Iniciante em PHP/MySQL.

"Ter problemas na vida é inevitável, mas ser derrotado por eles é opcional."

#6 Marcos Aurélio

Marcos Aurélio

    Das terras geladas da Sibéria

  • Usuários
  • 208 posts
  • Sexo:Masculino

Posted 17/09/2007, 14:15

Pelo o que eu entendi, você ABRE > GRAVA > FECHA linha por linha? :blink:
Rapaz... cria uma variável que vai concatenando as linhas anteriores e grava tudo de uma vez:

$linhas .= $dados;

aí depois você grava...

Qualquer dúvida posta o script aí.

(y)

#7 screenshotx

screenshotx

    12 Horas

  • Usuários
  • 153 posts
  • Sexo:Não informado

Posted 17/09/2007, 14:34

Entao, o script é esse:

while($row = ifx_fetch_row($result)) {

 $filename = 'relat_os.txt';
	 $somecontent = "$row[campo01];$row[campo02];\n";

  if (is_writable($filename)) {

		 if (!$handle = fopen($filename, 'w')) {
			  print "Erro abrindo arquivo ($filename)";
			  exit;
		 }

		 if (!fwrite($handle, $somecontent)) {
			 print "Erro escrevendo no arquivo ($filename)";
			 exit;
		 }

		 print "Sucesso: escrito ($somecontent) no arquivo ($filename)";

		  fclose($handle);
   }
 }

Ta dificil rs..
Valeu

Edição feita por: screenshotx, 17/09/2007, 14:38.

Iniciante em PHP/MySQL.

"Ter problemas na vida é inevitável, mas ser derrotado por eles é opcional."




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq