Back to top

Autore Topic: importare file excel in una tabella del DB  (Letto 8312 volte)

Offline federcla

  • Esploratore
  • **
  • Post: 139
  • Sesso: Maschio
    • Mostra profilo
importare file excel in una tabella del DB
« il: 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?



Offline Murphz

  • Global Moderator
  • Abituale
  • ********
  • Post: 1335
  • Sesso: Maschio
  • Trust No1
    • Mostra profilo
Re:importare file excel in una tabella del DB
« Risposta #1 il: 21 Mar 2013, 15:13:53 »
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.
Freelance Web & Graphic Design // Twitter

"...Nothing Important Happened Today..."

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:importare file excel in una tabella del DB
« Risposta #2 il: 21 Mar 2013, 15:24:13 »
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
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline federcla

  • Esploratore
  • **
  • Post: 139
  • Sesso: Maschio
    • Mostra profilo
Re:importare file excel in una tabella del DB
« Risposta #3 il: 26 Mar 2013, 15:15:57 »
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

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:importare file excel in una tabella del DB
« Risposta #4 il: 26 Mar 2013, 16:51:51 »
Leggere un csv e molto piu semplice che leggere un excell, non hai bisogno di librerie esterne

Codice: [Seleziona]
$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

    }

}
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline federcla

  • Esploratore
  • **
  • Post: 139
  • Sesso: Maschio
    • Mostra profilo
Re:importare file excel in una tabella del DB
« Risposta #5 il: 19 Giu 2013, 17:18:24 »
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

Codice: [Seleziona]
$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  :(

Codice: [Seleziona]

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  :)

Offline Murphz

  • Global Moderator
  • Abituale
  • ********
  • Post: 1335
  • Sesso: Maschio
  • Trust No1
    • Mostra profilo
Re:importare file excel in una tabella del DB
« Risposta #6 il: 19 Giu 2013, 17:24:10 »
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.
Freelance Web & Graphic Design // Twitter

"...Nothing Important Happened Today..."

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:importare file excel in una tabella del DB
« Risposta #7 il: 19 Giu 2013, 18:06:55 »
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
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline Murphz

  • Global Moderator
  • Abituale
  • ********
  • Post: 1335
  • Sesso: Maschio
  • Trust No1
    • Mostra profilo
Re:importare file excel in una tabella del DB
« Risposta #8 il: 19 Giu 2013, 18:28:34 »
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...
Freelance Web & Graphic Design // Twitter

"...Nothing Important Happened Today..."

Offline federcla

  • Esploratore
  • **
  • Post: 139
  • Sesso: Maschio
    • Mostra profilo
Re:importare file excel in una tabella del DB
« Risposta #9 il: 20 Giu 2013, 12:08:40 »
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
Codice: [Seleziona]
 
        $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



Offline federcla

  • Esploratore
  • **
  • Post: 139
  • Sesso: Maschio
    • Mostra profilo
Re:importare file excel in una tabella del DB
« Risposta #10 il: 20 Giu 2013, 12:20:23 »
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

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:importare file excel in una tabella del DB
« Risposta #11 il: 20 Giu 2013, 14:22:49 »
leggi quello che ti ho scritto io, non centra di sicuro nell'if, stai facendo molta confusione
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:importare file excel in una tabella del DB
« Risposta #12 il: 20 Giu 2013, 14:26:40 »
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
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline elvitto

  • Nuovo arrivato
  • *
  • Post: 10
    • Mostra profilo
Re:importare file excel in una tabella del DB
« Risposta #13 il: 11 Lug 2013, 17:14:52 »
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

 



Web Design Bolzano Kreatif