ottima analisi

alcuni errori "gnocchi" (tipo unlink con parametro "w" ) sono dei copia/incolla fatti in fretta e furia.. sono al lavoro ma l'idea della funzione mi piaceva e ho fatto presto :P

ma questo codice ancora una volta lo puoi sfruttare cambiando semplicemente poche righe di codice
e cioè

Codice PHP:
    if ($fields[$field] == trim($old) && $fields[trim($cla_field)] == trim($cla_value))
        {
        
$fields[$field] = trim($new); // riassegno il nuovo valore
        
$archivio[$pos]=implode("|",$fields)."\n"// creo la linea
        
unlink ("$table.txt","w"); //cancello la tabella
        
$link_tab=fopen("$table.txt","a+"); //ricreo la tabella
        
foreach ($archivio as $new_linefwrite($link_tab,$new_line);
        
fclose($link_db);
        return 
1// ok eseguito
        

con questo
(premetto che arreyzzi le linee del db originale con $archivio=file("$table.txt"); e puoi utilizzare il puntatore dell' array anche per sapere il num di linea (una dorta di ID )




Codice PHP:
    if ($fields[$field] == trim($old) && $fields[trim($cla_field)] == trim($cla_value))
        {
        
$fields[$field] = trim($new); // riassegno il nuovo valore
        
$new_line=implode("|",$fields); // creo la linea

        
$link_tab=fopen("$table.txt","a+"); //riapro la tabella
        
$line_find=($pos-1)*1024;
        
fseek($link_tab,$line_find);
        
fwrite($link_tab,$new_line);
        
fclose ($link_tab);
        return 
1// ok eseguito
        

ovviamente la storia della candizione sui campi è stata una svista anche quella importante è mantenere la stretta relazione tra tabella campi e tabella dati

prova così per quanto riguarda l' aggiornamento della tabella.. nn l' ho provata ma lo farò tra un' oretta