Newsgroup: it.comp.www.php
Titolo: informazione su opzione della funzione file

Buon giorno a tutto il newsgroup,
Avrei bisogno di un piccolo aiuto nella gestione della funzione file:
dopo aver aperto un file.txt con suddetta funzione.
Dopo avergli fatto contare le righe all'interno del file,
Con quale operazione  posso ( se si puň fare ) eliminare solo una 
determinata riga ? (
esempio la numero 5 ) ?
grazie a tutti

 ha detto:

spesso basta leggere il manuale, e ancora piů spesso i commenti degli
utenti: 
http://it2.php.net/manual/it/function.file.php#49780
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Staff di E-Xoopport - 
http://www.e-xoopport.it


Le indicazione sulla funzione file nel portale PHP   le avevo gia lette ma 
purtroppo esendo uno "sviluppatore" alle prime armi , non mi sono state di 
aiuto.
Grazie lo stesso.
Saluti.
PS- se qualcun'altro nel nwg sa darmi qualche indicazione...lo aspetto a 
braccia aperte ;-) 

braccia aperte ;-) 
Forse non hai letto bene quello che ti ho indicato...il link che ti ho
dato si riferisce ad un commento di un utente con il codice che serve
proprio a te.



La mia esigenza č leggermente diversa da quella indicata nell'esempio del 
sito.
Diciamo che io utilizzo un file txt dove vado a scrivere dei dati di un 
form.
In una determinata circostanza devo avere la possibilita di cancellare una 
determinata riga del file , indipendentemente da quello che ci sia scritto.
Immagino che dovrei aprire il file txt con la funzione "file()" fargli 
contare le righe del file  e successivamente eliminare la riga X .
Conosci qualche esempio inlustrato da cui pter prendere spunti ?
Grazie.
Saluti

 esempio la numero 5 ) ?
Non si puo`.
Devi aprire il file, caricarlo in memoria, eliminare la riga e
riscrivere tutto il file.
E non solo in PHP, ma in qualsiasi linguaggio.
Bye.
-- 
Alessandro Pellizzari

Mi sapresti dare qualche indicazione su come eseguire questa operazione ?
Grazie tante

Conosci qualche esempio inlustrato da cui pter prendere spunti ?
Ah ok...il procedimento comunque è simile, puoi fare un ciclo da 0 a
n-1 (con n lunghezza dell'array), controlli se il contatore del ciclo
è diverso dal numero di riga che vuoi cancellare: se è diverso scrivi
la riga, se è uguale la salti.



Perdonami ma qualche passaggio ancora mi sfugge.
Io avevo pensato:
"apro" il txt con la funzione file.
faccio un cilo per contare le righe
se (if) le righe sono 10 elimina la 5.
Sulla carta sembra facile , ma all'atto pratico con che funzione php posso
andargli a dire di eliminare una determinata riga nel file txt ? e 
successivamente come faccio per rimetterlo a video dopo averlo modificato ?
Grazie tante.

Grazie tante.
Non hai capito bene in concetto base; non c'è una funzione che ti
permette di cancellare direttamente una riga dentro il file, devi
prima leggere il file con la funzione file che te lo mette in un
array, successivamente fai un ciclo di lettura di questo array e man
mano che scorri gli elementi dell'array scrivi tutte le righe nel file
tranne quella che vuoi eliminare.



#Tieni un po di codice. Cmq la regola è RTFM!
#Mettiamo tu voglia cancellare la riga $n.
...
$file = fopen(file("filedamodificare.txt"),"a+");
$rows = count($file);
$i=0;
while ($i<$rows)
{
if(!($i == $n))
fwrite($newFile,$messaggio);
$i++;
}
fclose($file);
...


#Tieni un po di codice. Cmq la regola è RTFM!
#Mettiamo tu voglia cancellare la riga $n.
Grazie tante per i consigli !
Cosa significa RTFM ?
Hola.
PS - posto il codice che mi ha aiutato a risolvere il problema., magari a 
qualcuno può essere utile:
---------
          if ($argomento=="xxx" && $elimina==0)
          {
           $txt=file("nomefile.txt");
           unset($txt[$elimina]);
           $fp=fopen("nomefile","w")
             or die("non posso scrivere");
           fwrite($fp, join("", $txt));
           fclose($fp);
-------- 

 Hola.
Per sapere cosa significa RTFM... RTFM! :@
Basta googlare un pò, su...
David
-- 
Linux Registered User #334216
Get FireFox! >> 
http://www.spreadfirefox.com/?q=affiliates&id=48183&t=1
Staff >> 
http://www.debianizzati.org
 <<


Visto:
RTFM è l'acronimo della frase inglese Read The Fucking Manual ovvero "leggi 
il maledetto manuale

Pellix79 ha scritto:

Ci voleva poco, vedi? :)


 --------
A me non convince un granchè perchè:
1) non elimini la riga, cancelli il riferimento alla locazione di
memoria. Alla riscrittura il file conterrà una riga vuota.
2) forse risparmi codice, ma non guadagni in complessità. Il tuo
codice ha senso solo se inserito in un ciclo (altrimenti non capisco il
controllo sulla variabile $elimina). In questo caso hai un codice
sempre lineare ma tre volte più lento di come precedentemente proposto
e implementato.
3) non capisco il senso di quel controllo. Non bastava partire dalla
seconda riga? Forse mi sfugge il senso generale.
Spero di sembrare costruttivo.
My two cents.

 ha scritto nel messaggio
news:1150903017.8...@b68g2000cwa.googlegroups.com...
Ti spiego:
ho due file txt.
Da uno viene caricato l'oggetto e dall'altro il testo collegato all'oggetto.
(tipo i titoletti sul sito 
ansa.it
 )
Il controllo gliel'ho fatto fare per evitare che quando vado a cancellare la
riga cinque dalla pagina di amministrazione  , autamaticamente vengono
eliminate le righe 5 da entrambi i file txt. e cosi facendo il resto delle 
info contenute
nel file
"slittino" di una posizione senza lasciare righe vuote che potrebbero
causare un disallineamento delle informazioni tra i due file.
Tu hai qualcosa di megli da propormi per fare questa operazione alleggerendo
il codice ?
Saluti