Ricerca stringa e sovrascrittura file txt

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
Ciao a tutti e rieccomi qua :tifoso:

nel proseguio(si scriverà così? :rolleyes:) del mio script ho trovato un altro problema

mi spiego molto ma molto brevemente

da un form particolare arrivano delle variabili ora ina base ad una di queste variabili devo aprire un file TXT leggerne e modificarne i dati e fino alla sua lettura ci siamo per quanto riguarda la scrittura riesco solo a scriverlo da 0 o dalla sua ultima riga ma questo non mi interessa perchè in uno dei form suddetti è presente una select dove l'utente deve scegliere proprio il contenuto del file che poi si andrà a modificare

esempio

Nella select si legge il contenuto del file 1.txt così composto

Antonio-Isabella
Sara-Giovanni

ora l'utente sceglie una di queste righe e deve inserire le loro età in un text area ipotizziamo 32 e 28 per antonio-isabella

quindi lo script dovrebbe aprire il file 1.txt cercare la riga corrispondente Antonio-Isabella($var1) e in quella riga aggiungere i due campi ossia 32( $var2) e 28($var3)

cercando anche nel manuale php (che purtroppo è quasi tutto in inglese :incazz2:) credo di aver intuito che per questa operazione servono gli attributi fseek e ftell chi mi aiuta nell'indentare il codice?

io son riuscito al massimo a far scrivere le 3 variabii nel file partendo da una riga exnovo però a me serve che si legga prima senza $var2 e $var3 e successivamente dopo aver inserito i dati sovrascrivere la riga con l'aggiunta dei due campi($var2 e $var3)

un grazie a chi saprà aiutarmi
 
sono andato un pò avanti ed ho scritto il seguente codice

Codice:
<?

//matrici
$somecontent = "$dato1-$dato2 $dato3-$dato4";
$somecontent .= "\r\n";
$chiave_da_cercare = "$dato1-$dato2";
$myFile = "file.txt";
$file=file($myFile);
//apro il file
$fh = fopen($myFile, 'a+');

//cerco la chiave 
foreach($file as $riga)
  {
      if (strstr($riga,$chiave_da_cercare))
//tento di sovrascrivere la chiave con l'aggiunta di $dato3 e $dato4
fwrite($riga, $somecontent);
  }

fclose($fh);
?>

fino al passo di cercare la chiave facendo una prova con echo in effetti la riga me la trova quindi son sicuro che è errata la funzione fwrite, in linea di massima credo che dovrei posizionare il puntatore sulla riga trovata cancellarla e riscriverla. Probabilmente questo non sipuò fare perchè fwrite scrive alla fine del file quindi mi accontenterei di cancellare la riga trovata e riscrivire la nuova riga alla fine del file.

dove ho sbagliato? :confused:

per essere esatti così com'è il codice non fa altro che riscrivere nel file inq uesta maniera

riga1:$dato1-$dato2(originale)
riga2:$altrodato
riga3:la lascia vuota
riga4:riscrive $dato1-$dato2
riga5:scrive $dato1-$dato2 $dato3-$dato4
riga6:$dato1-$dato2 $dato3-$dato4

quindi non capisco anche il perchè scrive 4 righe di cui una vuota una ripetendo il dato originale e due righe con i nuovi dati

Help.

n.b. Spero non ci siano errori di indentatura
 

Discussioni simili