Newsgroup: it.comp.www.php
Titolo: Elaborazione file di testo

Buongiorno newsgroup,
ho bisogno di un consiglio.
Nel sito che gestisco ho creato una pagina per l'upload di un file di testo.
dopo la fase di upload inizio ad elaborarne le righe ed inserirle nel
database, intercettando eventuali errori di vario tipo
ad es. dati non confacenti il tracciato record.
Il mio dubbio č il segunete: Dove posso memorizzare  le righe che comunque
contengono errori, in modo che a fine elaborazione comunico i record
inseriti  e gli errori e un link per aprire una pagina che riepiloga gli
errori ?
Avete un condiglio?
Grazie, Giuliana

 Avete un condiglio?
Una volta avevo un coniglio... :-)
Io farei un nuovo file di log. Un semplice file di testo in cui
deciderai tu cosa inserire, magari qualcosa tipo:
Errore <codice dell'errore>: Riga xxx: <riga rifiutata>
Errore <codice dell'errore>: Riga yyy: <riga rifiutata>
Errore <codice dell'errore>: Riga zzz: <riga rifiutata>
Poi potrai leggere questo file quando ne avrai bisogno e visualizzare
gli errori nel modo che ritieni opportuno.
-- 
Stefano

Grazie Stefano e scusa gli errori di scrittura, ho il vizio di non rileggere
quel che scrivo!
Il mio ulteriore dubbio è creo un file di testo ( di log )  o una tabella
mysql in cui inserire errori ?
Inoltre dato che è l' utente registrato ad entrare nel sito , uploadare il
suo file ed elaborarlo,  quando cancellare il file o la tabella di log?
Ri-grazie, giuliana

 suo file ed elaborarlo,  quando cancellare il file o la tabella di log?
Dipende dalla situazione, da quanto complesso è il lavoro da fare con
questi dati, dalla frequenza con cui l'utente fa l'upload del file, da
dove registreresti il file (o la tabella). Queste sono domande a cui
solo tu che conosci la tua organizzazione puoi rispondere. Se hai delle
pagine di amministrazione del sito potrebbe essere una funzione
contenuta in esse, se la cosa deve essere automatica potrebbe essere uno
script che parte ogni notte.
Sono solo degli spunti che mi vengono in mente abbastanza generici, solo
tu puoi sapere qual è il metodo migliore.
-- 
Stefano

 suo file ed elaborarlo,  quando cancellare il file o la tabella di log?
Mettile in un array e salvalo in sessione, a meno che tu non voglia
conservarlo per eventualmente guardare gli errori nei giorni successivi.
Bye.
-- 
Alessandro Pellizzari

errori ?
IMHO l'invio di file non è un buon metodo di gestire il sistema. Se ci
sono degli errori cosa succede? L'utente invia di nuovo tutto il file?
Ti ritrovi dati doppi nel database? Oppure modifichi quelli già
esistenti, e come?
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it

 conservarlo per eventualmente guardare gli errori nei giorni successivi.
A un array nelle variabili di sessione non ci avevo pensato.
Mi chiedo: in caso di file di upload molto grandi e con un numero di
errori potenzialmente molto alto, quanto è ancora conveniente usare
questo metodo?
-- 
Stefano

 questo metodo?
La sessione e` un file (penso di hash) salvato in /tmp
Ha gli stessi limiti di un file normale, piu` un eventuale limite di
spazio se l'admin ha limitato le dimensioni di /tmp (sto parlando di
Linux, ma vale anche per c:\temp sotto Windows).
Hai il vantaggio che la cancellazione viene gestita automaticamente dal
sistema al timeout della sessione, e un altro vantaggio che consiste nel
non dover gestire a mano il file (ti basta leggere e scrivere
sull'array)
Bye.
-- 
Alessandro Pellizzari

IMHO l'invio di file non è un buon metodo di gestire il sistema. Se ci
sono degli errori cosa succede? L'utente invia di nuovo tutto il file?
Ti ritrovi dati doppi nel database? Oppure modifichi quelli già
esistenti, e come?
Se ci sono errori nel file inviato i record non sono inseriti, specialmente
se si tratta di chiave duplicata, dovrebbe essere solo comunicato all'
utente 1. che si è verificato un problema,  2. il tipo di problema ( campo
non contiene il dato che ci si aspetta, piuttosto il N° fattura è già
presente, chiave duplicata, bla bla ).
Credo sia compito dell' utente fornire un file (in base a un tracciato
comunicato ) che sia conforme.
Se l'utente continua poi a inviare il file errato è tonto!

 sull'array)
E questo conferma quanto dicevi sulla necessità di andare a recuperare i
dati del log in futuro.
Alla fine comunque penso che la scelta tra un file nel filesystem, un
file di sessione o una tabella in qualche db, sia da valutare di caso in
caso.
Grazie per le info, oggi ne ho già imparata un'altra :-)
-- 
Stefano

Grazie per i suggerimenti, io sto provando intanto a creare un file di log
( cosi' come consigliato) contenente i record errati per qls motivo,e
aggiungerndo un messaggio di errore appropriato.
A fine elaborazione, apparirà un link "Visualizza Errori"  a una nuova
pagina che leggerà il file di errori e mostrerà in una <table> i dati non
elaborati e in una colonna il messaggio di errore.
Al momento mi sembra una buona idea.
Giuliana

Se l'utente continua poi a inviare il file errato è tonto!
perchè allora non utilizzare un form per l'inserimento dei dati? Forse
perchè sono troppi? Potresti anche pensare ad un flag corretto/errato
da inserire nella tabella. Difficile però rispondere senza sapere
com'è strutturato l'intero sistema.
p.s. occhio alla sicurezza.


Grazie Francesco per i consigli,
In effetti gl inserimenti sono fatti via form per gli utenti registrati e
paganti!
Per gli altri devo e sto preparando un tracciato record per importare i
dati, il che implica che loro sappiano
creare un file seguendo il tracciato  e che alla fine si scoraggino e
vogliano registrare.
Intanto pero' oltre al tracciato da fornire devo comunque avere la fase di
import !
< p.s. occhio alla sicurezza.>
intanto finisco la procedurina, poi cerco in giro per garantire la
sicurezza!
Giuliana