Newsgroup: it.comp.www.php
Titolo: fwrite non lavora correttamente?

nel senso mi spiego meglio..
se antepongo a fputs un'altra operazione, poi non mi scrive + nel file
d esempio:
<?
$cat=fopen("2004.txt","rw");
$Ncod=$_GET["Ncod"];
$prova=fgets($cat);
fputs($cat,"$Ncod\n");
fclose($cat);
?>
e non mi scrive niente nel file...
<?
$cat=fopen("2004.txt","rw");
$Ncod=$_GET["Ncod"];
fputs($cat,"$Ncod");
fclose($cat);
?>
così invece mi scrive... a cosa può essere dovuto?

 se antepongo a fputs un'altra operazione, poi non mi scrive + nel file
A me funziona perfettamente.
<?php 
$filename = '2004.txt';
if (!file_exists ($filename)) {
	$cat = fopen ($filename, 'w+');
} else {
	$cat = fopen ($filename, 'r+');
}
/*
if ($cat !== false) {
	// error handling
}
*/
// $Ncod = $_GET["Ncod"];
$Ncod = 1;
$prova = fgets ($cat);
fputs ($cat, "$Ncod\r\n");
fclose ($cat);
print ($prova);
?>
-- 
I am what I am, I do what I can
Do. Or do not. There is not try.

 così invece mi scrive... a cosa può essere dovuto?
<pre><?php
echo "<b>{$_GET['Ncod']}</b>\n";
if (($cat = fopen('2004.txt',"w")) === FALSE) {
  die('Error: cant open the file<br />');
}
if (fputs($cat, "first line: {$_GET['Ncod']}\nsecond line: ") === FALSE) {
  die('Error: cant write to the file<br />');
}
fclose($cat);
include '2004.txt';
?>
-- 
www.iuz-lab.info

non avevo specificato il fatto che ho un file non vuoto,
nel quale devo inserire un riga in un certo punto..
con le vostre soluzioni ora sono riuscito a scrivere
senza problemi, però ho notato che mi vengono sovrascritte
anche le lettere che già ci sono...
infatti se provo a scrivere all'inizio del file, anche se sposto
la riga con \n viene comunque sovrascritta..
<?php
$cat = fopen('2004.txt',"r+");
fputs($cat,"\n");
fseek($cat,0);
fputs($cat,"{$_GET['Ncod']}\n");
fclose($cat);
?>
perchè io avevo provato così... Ncod mi viene scritto ma sopra al testo che 
già c'è..

 testo che gi` c'h..
E' il comportamento corretto.


ho capito.. ma non c'è modo di spostare tutto di una riga per non 
sovrascrivere quello che già c'è? 

 sovrascrivere quello che gi` c'h? 
Usa un ciclo, a partire dall'ultimo carattere all'indietro fino al
punto dove vuoi inserire il nuovo carattere.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E


mi spiegate perchč:
<?php
$cat = fopen('2004.txt',"r+");
$buffer=fgets($cat);
fputs($cat, "{$_GET['Ncod']}");
fclose($cat);
?>
mi scrive nel file e invece...
<?php
$cat = fopen('2004.txt',"r+");
$buffer=fgets($cat);
fputs($cat, "{$_GET['Ncod']}");
fclose($cat);
?>
non mi scrive niente nel file? che problemi da la riga $buffer = ?
io volevo leggere la riga per posizionarmi a fine riga.. 

 non mi scrive niente nel file? che problemi da la riga $buffer = ?
Quale dovrebbe esserela differenza tra i due script?
<?php
<?php
$cat = fopen('2004.txt',"r+");
$cat = fopen('2004.txt',"r+");
$buffer=fgets($cat);
$buffer=fgets($cat);
fputs($cat, "{$_GET['Ncod']}");
fputs($cat, "{$_GET['Ncod']}");
fclose($cat);
fclose($cat);
?>
?>


ah pardon... nel secondo quello che va non c'è $buffer= 

se quel buffer=fgets crea problemi come faccio a posizionarmi a fine riga?
io ho trovato solo il modo di leggerla, cosě mi ritrovo alla fine per 
forza.. 

 forza..
ma cmq sia ti troveresti a fine riga non a fine file..
e mi sembra che le tue necessita' richiedano di trovarti a fine file..
se e' cosi'..
http://php.net/fseek
-- 
www.iuz-lab.info

io mi devo posizionare alla fine di una riga
il problema č che la riga non ha dimensioni fisse, quindi
ho bisogno di leggerla con fgets, per trovarmi cosě a fine di essa
perciň:
<?php
$cat = fopen('2004.txt',"r+");
$buf = fgets($cat);
fwrite($cat,"CIAO");
fclose($cat);
?>
ma non mi scrive niente nel file... se tolgo la riga
$buf = fgets($cat);
lo script funziona... č questo che non capisco perchč? 

a sto punto mi rimane una soluzione...
apro due volte il file... infatti facendo cosě mi funziona:
<?php
$cat = fopen('2004.txt',"r");
for($i=0;$i<$_GET['Nrig'];$i++) {
$buf = fgets($cat);
$pos = ftell($cat);
}
$cat = fopen('2004.txt',"r+");
fseek($cat,$pos);
fwrite($cat,"CIAO");
fclose($cat);
?>
apro il file, leggo tot righe, salvo la posizione in cui mi trovo, riapro il 
file anche in scrittura, mi vado a posizionare al punto $pos e scrivo..
esiste un carattere che se inserito con fwrite/fputs mi permette di spostare 
tutto di una riga? o uno spazio?