supponiamo che il file sia strutturato così:
05-05-2007|antonio|30|Milano
05-05-2007|pippo|80|Milano
05-05-2007|demetrio|11|Milano
05-05-2007|ubaldo|69|Milano
05-05-2007|ugo|18|Milano
e che tu abbia un file di riferimento 'fields_utenti.txt'dove dichiari i campi della tabella (se non ce l'hai ti conviene farlo)
data
utente
eta
citta
Codice PHP:
<?php
if (RefreshLine("utenti","eta","69","35","nome = ubaldo") == 1)
{
echo "modifica eseguita</br>";
}
else
{
echo "errore!!</br>";
}
function RefreshLine($table,$field,$old,$new,,$cla) // vecchio valore, nuovo valore,campo, il riferimento (in mysql la clusula WHERE)
{
$fields=array();
$archivio=file("$table.txt");
$table_fields=file("fields_$table.txt");
foreach ($table_fields as $key=>$name_field) $table_fields[$key]=trim($name_field);
// elaboro la clusula
list($cla_field,$cla_value)=explode("=",$cla); // cla_field è il campo di condizione, cla_value è la variabile di confronto
// end elaboro la clusula
foreach ($archivio as $pos=>$line)
{
$vars_line=explode("|",$line);
foreach ($vars_line as $key=>$val)
{
$fields[$table_fields[$key]]=trim($val);
}
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_line) fwrite($link_tab,$new_line);
fclose($link_db);
return 1; // ok eseguito
}
}
return 0; // non trovato
}
?>
prova, non l' ho testa quindi potrebbero esserci errori di sintassi ca il concetto è corretto