Problema estrabolazione dati da excel in mysql attraverso codice php

  • Creatore Discussione Creatore Discussione virgi
  • Data di inizio Data di inizio

virgi

Nuovo Utente
11 Giu 2007
8
0
0
Ciao a tutti, mi sono iscritta da poco! ho un problema che mi perseguita da alcune settimane: :dipser:sto realizzando una applicazione web con PHP(purtroppo la versione 4), mysql e apache. Attraverso un file excel, di cui faccio l'upload nella mia applicazione, devo riuscire a estrabolarne i dati con codice php e inserirli in alcune tabelle che compongono il mio db, fatto con il client mysql Query Browser, fino adesso non ho avuto problemi, le mie tabelle si incrementano con i valori che gli passa il file excel, ma purtroppo attraverso php non rieco a creare le relazioni tra queste tabelle. Es. il mio file excel è composto da:

nome/ufficio
pippo/uff_1
paperino/uff_2
pluto/uff_1

io sono riuscita ha fare l'inserimento di questi valori in due tabelle separate e distinte: la tab "nome" e la tab "ufficio" ma non so alla tab "nome" come associare il valore "id" relativo alla tabella uffficio!!!!Scusatemi se sono stata cosi lunga, sicuramente potevo spegarmi in maniera migliore, ma spero che qualcuno di voi mi possa aver capito. Grazie a tutti e buona serata.
Virgi
 
Ciao a tutti, mi sono iscritta da poco! ho un problema che mi perseguita da alcune settimane: :dipser:sto realizzando una applicazione web con PHP(purtroppo la versione 4), mysql e apache. Attraverso un file excel, di cui faccio l'upload nella mia applicazione, devo riuscire a estrabolarne i dati con codice php e inserirli in alcune tabelle che compongono il mio db, fatto con il client mysql Query Browser, fino adesso non ho avuto problemi, le mie tabelle si incrementano con i valori che gli passa il file excel, ma purtroppo attraverso php non rieco a creare le relazioni tra queste tabelle. Es. il mio file excel è composto da:

nome/ufficio
pippo/uff_1
paperino/uff_2
pluto/uff_1

io sono riuscita ha fare l'inserimento di questi valori in due tabelle separate e distinte: la tab "nome" e la tab "ufficio" ma non so alla tab "nome" come associare il valore "id" relativo alla tabella uffficio!!!!Scusatemi se sono stata cosi lunga, sicuramente potevo spegarmi in maniera migliore, ma spero che qualcuno di voi mi possa aver capito. Grazie a tutti e buona serata.
Virgi

Premettendo che ignoro l'interazione tra php excel...ma visto che tu riesci tranquillamente a prendere i dati di excel e portarli nel db...non puoi aggiungere 1 colonna in excel id_ufficio, dove ci saranno tutti gli id degli uffici poi copiarli nel DB nella tabella ufficio: campo id_ufficio e nella tabella nome campo id_ufficio_chiave_esterna ?
 
Ti ringrazio per esserti interessato al mio problema!!Comunque, proprio ieri sera sono riuscita a risolvero, non da sola ma con un aiuto esterno!!però per rispondere alla tua domanda, il fatto è questo, che il file excel viene generato automaticamente da un altro programma, perciò le intestazioni sono fisse, per di più chi mette mano su questo file sono gli utenti finali, che non sanno neanche che cosè un ID, perciò non potrebbero mai aggiungerlo loro, per questo io ho pensato a un upload del file e poi far fare tutto a php!! comunque se ti può interessare ti mando il codice che ho scritto!! ti premetto, che per far parlare excel con php devi scaricarti due librerie da internet al sito:http://sourceforge.net/projects/phpexcelreader/
il download consiste in due file, scritti in php:reader.php e OLE.inc (un file di testo).Chiaramente devi avere una pagina dove fare l'upload, una pagina che elabora il codice, un db mysql e un file excel:
<form enctype="multipart/form-data" action="--URL--" method="POST" name="upload">
<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
Cerca il file excel: <input name="userfile" type="file" />
<input type="submit" value="inserisci" />
</form>

e poi la pagina che elabora il file, se ti può interessare:
<? // script per fare l'upload
// imposto il percoso dell'upload il file
$uploaddir = '../excel/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "Il file &nbsp;" . $_FILES['userfile']['name'] . "&nbsp;è stato caricato sul Server con successo.";
} else {
echo "L'upload non è riuscito";
}
//fine script upload

// inizio script per far interagire excel e php
//includo la libreria che mi serve per leggere excel
require_once ('../excel/reader.php');
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251');

//gli dico dove deve pescare il file
$data->read('../excel/indirizzi.xls');

//imposto la connessione
$conn=mysql_connect("localhost","root","password");

mysql_select_db("nomedb");
//eseguo un ciclo for sul file excel
for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++){
$nome= "" . $data->sheets[0]['cells'][$i][1].""; //nome
$ufficio= "" . $data->sheets[0]['cells'][$i][2] .""; //ufficio
echo $nome;
echo $ufficio;

//faccio una select sullaa tabella ufficio
$query_rsufficio = "SELECT idUfficio FROM ufficio
WHERE ufficio.ufficio='".$ufficio."'";
$rsufficio = mysql_query($query_rsufficio, $conn) or die(mysql_error());
$totalRows_rsufficio = mysql_num_rows($rsufficio);

// faccio degli echo per vedere se funziona
echo "num righe=" . $totalRows_rsufficio;?>
<br><?
//faccio una if per controllare che non vengano inseriti valori uguali nella tab ufficio
if($totalRows_rsufficio==0){
//non esiste nessun ufficio con nome uguale al valore della variaabile ufficio. Quindi inserisco una nuova riga.
$insert="insert into ufficio (ufficio) values('" . $ufficio . "')";
$dati=mysql_query($insert, $conn);
//con questa funzione mi ricavo l'id dell'ufficio
$idufficio=mysql_insert_id();
echo "l'id ufficio è" . $idufficio;
} else {$row_rsufficio = mysql_fetch_assoc($rsufficio);
$idufficio=$row_rsufficio['idUfficio'];
//echo "id dell'uff letto dal db è=" . $idufficio;
}
//dopo aver inserito i valori nella tab ufficio e trovati gli id faccio una insert sulla tab nomi e collego gli id dell'uffucio nella tab nomi, tutto questo dentro il ciclo for
$query="insert into nomi (nome, idufficio) values('" . $nome . "', '" . $idufficio . "')";
$dati=mysql_query($query, $conn);

}
?>
Ciao e grazie ancora:)
Virgi
 
Bella sta cosa di excel x gli utenti finali impediti :D beh ci avevo pensato alla soluzione che hai spiegato ma pensavo che i vari id erano relativi ad un solo file e quindi dovevi per forza inserirli nel file excel...se ho capito bene hai tanti file excel e ognuno ha il suo id_ufficio...? o non ho capito nulla? :)
 
Ciao, per essere più chiara il file file excel sull' ufficio era solo un esempio per farla facile, ma i miei dati riguardano libri con tutti i loro dettagli!sto facendo una applicazione sulle bilioteche digitali, perciò, ci sono varie persone che inseriscono i dati dei loro libri in un software per fare la catalogazione, da questo software si estrae un file excel con tutti i dati, perciò il file excel per ogni persona è uno ma attraverso il codice php deve essere spezzettato quante sono le tabelle che compongono il mio db, per poi poter creare le varie relazioni.Cosi nella mia applicazione, risulterà una tabella dinamica, che si incrementa automaticamente, che farà vedere tutti i libri di quella data persona o ente.
Ciao
:)Virgi
 
Attraverso un file excel, di cui faccio l'upload nella mia applicazione, devo riuscire a estrabolarne i dati con codice php e inserirli in alcune tabelle che compongono il mio db

Ma è da pazzi! Per di più i dati sono inseriti da persone che in Excel porebbero scrivere qualsiasi cosa, quindi vanno impostati controlli a morire!

Dato che ho la sensazione che non sia un compitino universitario ma un lavoro, inizierei ad optare per una soluzione differente col cliente!

Però forse non ho capito: devi aggiuornare un database in funzione della lettura di un file Excel dopo che è stato uploadato? Se si, fin qui ci sei arrivata? Il problema dov'è?
 
per fortuna il problema l'ho risolto con il codice che ho scritto nella prima risposta, sicuramente dovrò mettere parecchi controlli anche se gli utenti finali fanno parte dell'ente dove lavoro, è una intranet, anzi più che lavoro è uno stage!!, perciò è più facile per me gestire la situazione.
Se ti interessa, io ho messo a disposizione il codice, sicuramente ci possono essere anche modi migliori per risolvere il problema, magari fare tutto attraverso le classi, ma io la programmazione ad oggetti, purtroppo, non la conosco.
Ciao
Virgi
 
per fortuna il problema l'ho risolto con il codice che ho scritto nella prima risposta, sicuramente dovrò mettere parecchi controlli anche se gli utenti finali fanno parte dell'ente dove lavoro, è una intranet, anzi più che lavoro è uno stage!!, perciò è più facile per me gestire la situazione.

Certo, male che vada scappi :D

Se ti interessa, io ho messo a disposizione il codice, sicuramente ci possono essere anche modi migliori per risolvere il problema, magari fare tutto attraverso le classi, ma io la programmazione ad oggetti, purtroppo, non la conosco.
Ciao
Virgi

Grazie :)

In sostanza il problema è risolto?
 
Si, è risolto, anche se, come ti ho detto, tutto quello che ho fatto era su un file excel di prova con due cose scritte dentro, mentre il vero file che verrà generato sarà un pò più complesso e con più informazioni!! Comunque l'importante è che ho capito l'algoritmo da usare!!:D
 

Discussioni simili