Salve,
Sono qui ad esporre un problema che proprio non riesco a risolvere, allora devo fare uno script che gestisca praticamente le entrate e uscite di un'azienda, ho la nessita che esso giri su web ma che NON utilizzi MySQL o altri tipi di dbms per cui l'unica opzione rimane l'utilizzo dei file, iniziando lo script (visto che sulla rete dopo svariati giorni di ricerca non ho praticamente trovato nulla, nemmeno uno script da adattare
) mi sono subito accorto che non e' cosi facile come sembrava (sarebbe molto + semplice gestire il tutto con mysql, ma aime non posso) infatti mi sono dovuto fermare dopo poche righe di codice perchè non riesco proprio a trovare un metodo per scrivere su UNA SOLA riga del file di testo da me creato come database per i dati, questo è il codice php completo che potete eseguire per testare il problema :
Codice PHP:
$filename = "archivio.txt";
if (file_exists($filename)) {
echo "
il file $filename esiste";
// conta quante righe ha il file solo per infomazioni
echo "
ha : ".count(file($filename))." linee";
// imposta la lingua italiana per la formattazione della data
setlocale (LC_TIME, "it","it_it","it_IT","it_it@euro","ita","ita_ita","italiano");
// visualizza la data in formato timestamp dell'ultimo accesso al file
echo "
la data dell'ultimo accesso al file è : " . strftime("%A %d %B %Y, %H.%M.%S ", fileatime($filename));
// lettura del contenuto di una determinata linea del file utilizzando la funzione personale LeggiRiga
$row = LeggiRiga($filename, 3);
echo "
le linea 3 contiene : ".$row." del file ".$filename;
// divide i campi della linea precedentemente letta
$content_fields = explode("|", $row);
// conta il numero di campi della linea precedentemente letta (non serve poiche il numero dei campi è sempre lo stesso, ma tornare utile per eseguire un controllo proprio per stabilire che il numero dei campi siano sempre gli stessi)
$tot_num_row =count($content_fields);
if ($tot_num_row != 6) {
echo "
ATTENZIONE UNA DELLE LINEE NON CONTIENE GLI STESSI CAMPI (".$tot_num_row.") DELLE ALTRE LINEE, L'ARCHIVIO POTREBBE ESSERE CORROTTO";
} else {
echo "
le linea 3 contiene : ".$tot_num_row." campi ";
}
// i nomi dei campi sono contenuti in un array
$name_fields = array('DATA', 'CLIENTE', 'OPERAZIONE', 'TIPO', 'DESCRIZIONE', 'IMPORTO');
// cicla gli array $name_fields e $content_fields per visualizzare i nomi dei campi e il rispettivo contenuto associatogli
for ($i = 0; $i < $tot_num_row; $i++) {
echo "
il campo : ".$name_fields[$i]." della linea 3 contiene : ".$content_fields[$i];
}
//
//.....elaborazione dei dati e reincapsulamento in un array per la scrittura
//
// unisce i campi in una sola linea dividendoli con il segno | (incapsulamento)
$write_content_fields = implode("|", $content_fields);
// scrittura del contenuto di una variabile su una determinata linea di un file utilizzando la funzione personale ScriviRiga
$writed_row = ScriviRiga('test.txt', 3, $write_content_fields);
echo "
le linea 3 del file ".$filename." è stata modificata, ora contiene : ".$writed_row;
} else {
echo "
Il file $filename non esiste";
// crea il nuovo file di testo vuoto
touch($filename);
}
// *****LISTA DELLE FUNZIONI PERSONALIZZATE******
/* uso : LeggiRiga(nome_del_file, numero_linea_da_leggere) */
function LeggiRiga($file_name, $line_num) {
$fn = fopen($file_name,"r");
$line_cnt = 1;
while ($line = fgets($fn, filesize($file_name))) {
if ($line_cnt == $line_num) {
return $line;
}
$line_cnt++;
}
}
/* uso : ScriviRiga(nome_del_file, numero_linea_da_scrivere, contenuto_da_scrivere) */
function ScriviRiga($file_name, $line_num, $content) {
$fn = fopen($file_name,"w");
fseek($fn, 23);
fwrite($fn, $content);
echo "
TEST FUNZIONE $content DA SCRIVERE";
}
?>
mentre questo e' il file di testo con alcuni dati per i test :
codice:
05-09-2007|Mario Rossi|USCITA|TIPO|descrizione|importo
05-09-2007|Giulio Cesare|ENTRATA|TIPO|descrizione|importo
05-09-2007|Paolo Bianchi|ENTRATA|TIPO|descrizione|importo
05-09-2007|Luisa Neri|USCITA|TIPO|descrizione|importo
05-09-2007|Giulio Cesare|ENTRATA|TIPO|descrizione|importo
05-09-2007|Marco Rossi|ENTRATA|TIPO|descrizione|importo
RINGRAZIO IN ANTICIPO TUTTI COLORO CHE MI DARANNO UNA MANO ALLA RISOLUZIONE DEL PROBLEMA