- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Excel - php - mysql
-
Excel - php - mysql
Un saluto a tutti,
premetto che sono nuovo di questo mondo e che mi ci ritrovo per esigenze lavorative, quindi vi prego se sbaglio non mandatemi a quel paese....
ho da qualche giorno iniziato a lavorare per un'azienda che si occupa della distribuzione di cosmetici, il mio capoarea mi ha affidato il compito di storicizzare in un database mysql tutti i dati delle vendite che attualmente sono presenti in vari fogli di excel (ad ogni mese dal gennaio 2006 a ottobre 2008 corrisponde un foglio excel).
Il file contiene le seguenti colonne:
IdOrdine : campo che identifica l'ordine prodotto dalla centralinista
IdCentralinista: che è il suo codice personale
Cognome: cognome della centralinista
Nome: nome della centralinista
Cliente: numero di telefono del cliente che ha fatto l'ordine
Descrizione di eventuale consegna rifutata se andata a buon fine è scritto ASSENTE
Il gruppo al quale appartine il cliente Costante - Nuovo - Incostante
Provenienza Cliente: Internet - CallCenter - Venditore
Stato Cliente: Prima chiamata - Seconda Chiamata - Mai chiamato
Data Inserimento Ordine
Data Consegna Ordine
Fatturato con iva
Fatturato senza iva
Consegnato con iva
**Consegnato senza iva **
N.ro ordini prodotti nel mese dalla centralinistaAd ogni riga del file Excel corrisponde un ordine prodotto dalla centralinista, quindi se la centralinista in un mese produce 100 ordine mi ritrovero ad avere 100 righe con lo stesso IdCentralinista: Cognome: Nome:
Vorrei creare un'applicativo web scritto in php che mi dia la possibilità di importare i dati contenuti nel foglio excel in un database mysql...
Come potrei ovviare questo problema?
Tenendo in considerazione anche che in un mese le centraliniste erano 30 magari il mese successivo 25 e l'altro ancora 50, quindi non avendo dati costanti?Alla fine una volta importati i dati, ho la necessità di raggruppare gli ordini prodotti dalle operatrici, avendo un report per ognuna di loro, che mi dica quanti ordini hanno prodotto da data a data, quanti ne sono stati consegnati, quanto fatturato hanno prodotto e calcolare in base a determinati criteri delle provvigioni...
Confido in voi per questo miracolo.
Saluti
Alessandro.P.S
naturalmente questa richiesta è solo per avere degli input su come impostare il tutto al fine di raggiungere lo scopo prefissato....
-
Si tratta di un lavoro una tantum (es. una volta fatto l'import dello storico, tutti i nuovi dati verranno inseriti nel DB MySQL, magari tramite una interfaccia web)?
Oppure si tratta di un lavoro che devi fare con una certa regolarità (es. una volta al mese devi eseguire l'import dei dati del mese precedente)?
-
[...]
Ciao,
il lavoro va fatto tutti i mesi, in effetti la sede centrale a fine mese trasmette i dati in formato xls, io li dovrei prima importare in mysql, poi da li fare i conteggi...
Quindi è un lavoro che dovro fare tutti i mesi, storicizzando tutti gli ordini...Ciao
Alessandro....
-
Se puoi, cerca di lavorare su un file CSV oppure con i campi separati da tabulazione, cercando di mantenere sempre lo stesso formato (ordine dei campi). Manipolare dei file testuali è molto più semplice e veloce che dover avere a che fare con formati binari (o anche open doc) di Microsoft.
A parte ciò, dovresti partire progettando il database. Sicuramente avrai due tabelle: centraliniste e ordini, collegate con un foreign key idcentralinista. Tutto questo per rispettare le regole di normalizzazione.
A partire da dati testuali, puoi utilizzare explode, foreach, etc. per effettuare un parsing preliminare ed ottenere degli array contenenti i campi di ogni riga. L'import dei dati dovrebbe partire con quelli della centralinista (in modo da gestire correttamente la chiave esterna) e poi inserendo i dati dell'ordine.
IMHO è piuttosto semplice da implementare, probabilmente devi spendere un po' di tempo perfezionando il codice del parser in modo da renderlo adatto a tutti i tipi di input ed in grado di gestire eventuali errori.
-
Come ti dicevo nel mio primo posto io sono un principiante in tale linguaggio e avrei bisogno di una mano passo - passo per capire cosa fare e in che ordine farlo...
Da quello che ho capito, mi suggerisci di iniziare a strutturare il database, perfetto, prima di farlo volevo farti dare un'occhiata alla struttura che pensavo di dare ad esso, comprensiva di relazioni....
non sapendo come inserire l'immagine te la invio tramite posta elettronica e poi casomai se ti farà piacere aiutarmi provvederai tu a pubblicarla...
Ciao
Alessandro!
-
Questo è giusto un abbozzo di quella che potrebbe essere la struttura del DB. Molto dipende dalle necessità, potresti anche gestire tutto con una tabella denormalizzata magari ottimizzando un po' gli indici.
[php]CREATE TABLE centraliniste (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
cognome VARCHAR(255) NULL,
nome VARCHAR(255) NULL,
PRIMARY KEY(id)
);CREATE TABLE clienti (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
cliente INTEGER UNSIGNED NULL,
gruppo INTEGER UNSIGNED NULL,
provenienza INTEGER UNSIGNED NULL,
stato INTEGER UNSIGNED NULL,
PRIMARY KEY(id)
);CREATE TABLE ordini (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
centralinista_id INTEGER UNSIGNED NOT NULL,
cliente_id INTEGER UNSIGNED NOT NULL,
consegna VARCHAR(255) NULL,
stato_cliente VARCHAR(255) NULL,
data_inserimento DATE NULL,
data_consegna DATE NULL,
anno INTEGER UNSIGNED NULL,
mese INTEGER UNSIGNED NULL,
fatturato_ivato INTEGER UNSIGNED NULL,
fatturato INTEGER UNSIGNED NULL,
consegnato_ivato INTEGER UNSIGNED NULL,
consegnato INTEGER UNSIGNED NULL,
PRIMARY KEY(id),
INDEX ordini_FKIndex1(cliente_id),
INDEX ordini_FKIndex2(centralinista_id),
INDEX ordini_mesi(anno, mese)
);[/php]
-
[..]
Ciao Filippo,
ti ho inviato una posta all'indirizzo indicato in msn, potresti dare un'occhiata e farmi sapere cosa ne pensiGrazie!
-
La struttura che mi hai inviato va bene. Tieni solo conto che durante l'importazione dovrai fare vari controlli sull'esistenza dei record nelle tabelle correlate. Ad esempio, se un cliente non è presente deve essere inserito in anagrafica prima di fare l'import dell'ordine, etc.
-
[...]
Ok, allora inizio con il creare la struttura del DB in mysql, poi provo ad importare i dati...
per l'importazione trovo una guida esaustiva da qualche parte nel forum immagino....
Grazie
Ale!