Joomla.it Forum
Non solo Joomla... => Sviluppo => : federcla 21 Mar 2013, 12:31:41
-
Ciao a tutti, mi servirebbe una mano
Ho la necessità di leggere i dati in un file excel e di inserirli in una tabella del DB.
Dovrei creare una pagina per il caricamento del file, leggere i dati contenuti all'interno e inserirli nel DB, avete qualche consiglio da darmi?
Conoscete qualche modulo che mi permetta di fare questa operazione?
-
Ciao,
moduli che lo fanno non penso ci siano.
Per come la farei io si tratterebbe di fare un field upload in un form che va ad una pagina php (o magari una estensione fatta ad hoc) che ne analizza il contenuto (php xls o php csv) e, se conforme, lo aggiunge con una query al db. Se non ti occupi di programmazione lascerei perdere in partenza.
-
per leggere gli xls http://phpexcel.codeplex.com/
funziona molto bene, lo sto usando proprio ora ma come diceva anche Murphz se non sai programmare e un bel problema
-
Per come la farei io si tratterebbe di fare un field upload in un form che va ad una pagina php (o magari una estensione fatta ad hoc) che ne analizza il contenuto (php xls o php csv) e, se conforme, lo aggiunge con una query al db. Se non ti occupi di programmazione lascerei perdere in partenza.
Di programmazione ne capisco, solo che sono un bel po' arruginito, e joomla su alcune cose non mi aiuta :(
al momento sto usando chronoforms perchè mi permette di inserire del codice php, ma sto trovando delle difficoltà, in particolare su come far leggere il file csv
-
Leggere un csv e molto piu semplice che leggere un excell, non hai bisogno di librerie esterne
$csv="indirizzo_csv";
if (($handle = fopen("$csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000000, ";")) !== FALSE) {
$data //// è un array con tutte le colonne del csv riga per riga quindi $data[0] avra il primo valore e cosi via
}
}
-
Eccomi, finalmente posso continuare questo progetto, meglio tardi che mai :)
Leggere un csv e molto piu semplice che leggere un excell, non hai bisogno di librerie esterne
$csv="indirizzo_csv";
if (($handle = fopen("$csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000000, ";")) !== FALSE) {
$data //// è un array con tutte le colonne del csv riga per riga quindi $data[0] avra il primo valore e cosi via
}
}
ho usato il tuo codice, ho fatto solo 2 piccole modifiche, ho inserito la variabile con il path corretto dove si trova il file ed ho inserito un ciclo per stampare a video i dati, ma non ha funzionato :(
if (($handle = fopen("$csv_path", "r")) !== FALSE)
{
while (($data = fgetcsv($handle, 1000000, ";")) !== FALSE)
{
$data //// è un array con tutte le colonne del csv riga per riga quindi $data[0] avra il primo valore e cosi via
}
}
foreach ($data as $righe)
{
echo $righe;
}
Quale potrebbe essere il problema?
Grazie per l'aiuto :)
-
Possibili problemi:
- non entra nel primo if e quindi non apre il file
- un errore nella condizione del while
Per ovviare a questi, consiglio di provare con qualche echo prima, per sapere dove è realmente l'errore.
Metti un echo "if"; dopo l'apertura dell'if e vedi se entra, metti un echo "while"; nel while e vedi se cicla correttamente.
Se mostra tutti gli echo, il problema è nel foreach.
-
Mi sembra scontato che l'errore sia ne l fatto che vuoi leggere la variabile $data dopo un while che termina assegnando a $data il valore false quindi data non è un array, e un boolean
-
Mi sembra scontato che l'errore sia ne l fatto che vuoi leggere la variabile $data dopo un while che termina assegnando a $data il valore false quindi data non è un array, e un boolean
Vero :) il problema è quello...
-
Mi sembra scontato che l'errore sia ne l fatto che vuoi leggere la variabile $data dopo un while che termina assegnando a $data il valore false quindi data non è un array, e un boolean
Scusa ma ho un po' di confusione, ho provato a leggere la variabile in un ciclo perchè qui mi hai detto che $data è un array
$data //// è un array con tutte le colonne del csv riga per riga quindi $data[0] avra il primo valore e cosi via
ora mi dici che è un boolean con valore FALSE. Il valore FALSE l'avevo interpretato come valore di uscita dal ciclo di lettura del file
scusa ma non ho capito
-
Possibili problemi:
- non entra nel primo if e quindi non apre il file
- un errore nella condizione del while
Per ovviare a questi, consiglio di provare con qualche echo prima, per sapere dove è realmente l'errore.
Metti un echo "if"; dopo l'apertura dell'if e vedi se entra, metti un echo "while"; nel while e vedi se cicla correttamente.
Se mostra tutti gli echo, il problema è nel foreach.
Ho inserito gli echo come mi hai consigliato tu, non entra già nell'IF, non stampa nulla
-
leggi quello che ti ho scritto io, non centra di sicuro nell'if, stai facendo molta confusione
-
Ti consiglio di guardare una guida di php,
while (($data = fgetcsv($handle, 1000000, ";")) !== FALSE) {
$data //// è un array con tutte le colonne del csv riga per riga quindi $data[0] avra il primo valore e cosi via
}
qua data e un array che contiene una riga del csv, quindi leggo una riga ed ho la riga letta sotto forma di array, ne leggo un'altra fino a che non ce ne sono piu e mi rastituisce false while (($data = fgetcsv($handle, 1000000, ";")) !== FALSE)
esce dal while, quindi a quel piunto data non è piu un array. se vuoi stampare qualcosa lo devi fare nel while
-
mi sn inserito nella discussione ... anche se occorre magari da xls a csv e poi su DB
si puo avere un riassunto step by step ...? ;)
avevo visto cronoform va lo vedo molto poco user-friendy ;D