Your SlideShare is downloading. ×
Università degli studi di Trieste    Tesi di laurea triennale in ingegneria informatica    Progettazione e sviluppo di un’...
tesi di laurea triennale in ingegneria informatica                                  IntroduzioneQuesta tesi si occupa dell...
tesi di laurea triennale in ingegneria informatica1. Requisiti:l’utente che si connette al sito naviga tra i prodotti,ne v...
tesi di laurea triennale in ingegneria informatica                                      DAL PRIIMO STRATO::               ...
tesi di laurea triennale in ingegneria informatica       DETTAGLIO ORDINE                 INFORMAZIONI UTENTE             ...
tesi di laurea triennale in ingegneria informatica   Informazioni:per concretizzare gli ordini servono tre tipi diversi di...
tesi di laurea triennale in ingegneria informatica                                            HOME PAGE            AIUTO  ...
tesi di laurea triennale in ingegneria informatica•   Informazioni spedizione(INFOSPED):la pagina dove vengono inserite le...
tesi di laurea triennale in ingegneria informatica                                      (1,N)       ORDIINE               ...
tesi di laurea triennale in ingegneria informatica      STATUSOR      STATUSOR      STATUSOR                              ...
tesi di laurea triennale in ingegneria informaticaQuindi si esplicitano le tabelle(dalla 1 alla 5 sono dell’infrastruttura...
tesi di laurea triennale in ingegneria informatica                                                 INFRASTRUTTURA         ...
tesi di laurea triennale in ingegneria informatica          MOSTRAPRO(mostrapro.php):la pagina da cui si visualizzano i pr...
tesi di laurea triennale in ingegneria informatica                                        HOME PAGE..php                  ...
tesi di laurea triennale in ingegneria informaticaBisogna inoltre predisporre dei file inclusivi di libreria con estension...
tesi di laurea triennale in ingegneria informatica                                     APPLIICATIIVO                      ...
tesi di laurea triennale in ingegneria informatica                                 2. Realizzazione1. Implementazione:la d...
tesi di laurea triennale in ingegneria informaticaCREATE TABLE Elord(id_elord INTEGER AUTO_INCREMENT PRIMARY KEY,id_ord IN...
tesi di laurea triennale in ingegneria informatica(    id_utente INTEGER AUTO_INCREMENT PRIMARY KEY,    nome VARCHAR(120) ...
tesi di laurea triennale in ingegneria informatica nome VARCHAR(100) NOT NULL)ENGINE = InnoDB;CREATE TABLE Genere(  id_gen...
tesi di laurea triennale in ingegneria informatica/** * File foglio.css * * Questo file contiene il foglio base per lappli...
tesi di laurea triennale in ingegneria informaticah1 {font-family: Arial, Helvetica, sans-serif; color: #000089 }h2 {font-...
tesi di laurea triennale in ingegneria informatica}?>  </td></tr></table><table width=100% border=0 cellspacing=0 cellpadd...
tesi di laurea triennale in ingegneria informatica        echo <<<EOHTML        <td align=center width=50%>         <font ...
tesi di laurea triennale in ingegneria informatica /*  * Poi,la gestcar aggiunge una voce per questo aid  * nel carrello d...
tesi di laurea triennale in ingegneria informatica      /*       * Si controlla se ci sono già dati nella sessione       *...
tesi di laurea triennale in ingegneria informatica  *  *  */ public function earticolovalido($in_albumid) {   /*    * se è...
tesi di laurea triennale in ingegneria informatica  *  */ public function ottieniInfoAlbum($in_albumid) {   /*    * trasfo...
tesi di laurea triennale in ingegneria informatica   }ALBUMIn generale gli album in vendita sono fondamentalmente racchius...
tesi di laurea triennale in ingegneria informatica     * $in_prezzo          - campo prezzo     * $in_immagine           -...
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Tesi di laurea   Fabiano Dalla Piazza
Upcoming SlideShare
Loading in...5
×

Tesi di laurea Fabiano Dalla Piazza

1,410

Published on

Progettazione e sviluppo di un'applicazione per commercio elettronico-Tesi di laurea triennale

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,410
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
24
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Tesi di laurea Fabiano Dalla Piazza"

  1. 1. Università degli studi di Trieste Tesi di laurea triennale in ingegneria informatica Progettazione e sviluppo di un’applicazione per commercio elettronico Laureando RelatoreFabiano Dalla Piazza Preg.mo prof.Maurizio Fermeglia Anno accademico 2011-12
  2. 2. tesi di laurea triennale in ingegneria informatica IntroduzioneQuesta tesi si occupa della costruzione,strutturazione e realizzazione di un’applicazioneper commercio elettronico. Consentirà agli utenti di visualizzare dei prodotti,di selezionarlio restituirli se precedentemente scelti,infine di riceverli con relativa fatturazione.Ciò che ci si prefigge è ideare una struttura informativa commerciale replicabile in scala epotenzialmente remunerativa.La causa scatenante è il desiderio di apprendere una metodologia per fabbricare un’utilestrumento di business potenzialmente estendibile.Tuttavia si è generata dalle esigenze diuna commercializzazione artigianale di tipo familiare.Il commercio on-line è in continuo incremento.Si prevedono ulteriori espansioni future.Lepotenzialità sono causate dai principali fattori di comodità e convenienza economica(menocode,meno viaggi,meno tempo perso e il tempo è denaro,riduzione della catena diintermediazione commerciale,minor sovrapprezzo). Le attuali soluzioni modulari dei carrellipreimpostati vanno inseriti e integrati in un sistema che non è specializzato a tal fine. Leproposte più “compatte” prevedono la delega della gestione mediante pagamento di uncanone periodico piuttosto elevato,se raffrontato con i costi di gestione(hosting,aggiornamenti). Questi si ammortizzano sulla quantità di siti amministrati. Tuttavia tali costisono inevitabilmente destinati a scendere a ragione di un maggior numero di competitori.L’alternativa è scaricare un pacchetto software configurato,ma personalizzabile in base aiprodotti. E’ il prodotto di questo progetto.Ci si pongono delle tappe progressive per lo sviluppo del progetto riassumibili nei seguentipunti: Raccolta requisiti:i dati caratteristici vengono rilevati ponendosi le domande su cosa sia e come si comporti un sito di e-commerce. Punto di partenza empirico è una simulazione di navigazione con ordinativi su un diffuso sito di commercio elettronico; Analisi:partendo dal possesso dei requisiti si individuano gli oggetti e le entità fondamentali componenti il sistema e si studia la loro interazione; Progettazione:si escogita il sistema basandosi sull’analisi precedentemente svolta; Realizzazione:sfruttando la conoscenza delle tecnologie attuali si sceglie la migliore soluzione fattibile per la realizzazione separando l’interfaccia dall’implementazione; Test:si effettuano i test per verificare la funzionalità e la giustezza del risultato; Porting in produzione:si attua l’esportazione del prodotto.Vengono selezionati come sistema operativo Windows nella versione 7 perché indotazione all’autore,Mysql come RDBMS e utilizzati moduli in .php per fornire script dielaborazione o pagine vere e proprie del sito,eventualmente corredato da delle include dilibreria in formato .txt ,.inc.Le motivazioni di questa scelta verranno spiegate nella fasefinale. 1. Analisi e progettazione progettazione e sviluppo di un’applicazione per commercio elettronico 2
  3. 3. tesi di laurea triennale in ingegneria informatica1. Requisiti:l’utente che si connette al sito naviga tra i prodotti,ne visualizza lecaratteristiche ed eventuali commenti di altri utenti. Può aggiungere un prodotto,toglierlo emonitorare il materiale in ordinazione in ogni momento. Quando ha terminato la propriaspesa, invia i dati di fatturazione e spedizione con codice criptato,li verifica, sceglie lamodalità preferita di pagamento, lo esegue,e ne constata il successo o meno. L’utenteviene avvisato sullo stato dell’ordine.Il sistema segnala errori qualora si verifichino. E’possibile richiedere un aiuto. Il sistema rileva se l’utente è già registrato e deve garantirel’incolumità e la privatezza dei dati. Deve inoltre possedere facilità d’uso(aiuto),semplicità,scalabilità,robustezza e deve essere diffondibile commercialmente(parolechiave).2. Analisi:il sistema consente di interagire con pagine diverse in tempi diversi.Gli utentigiunti nel sito opereranno indifferentemente con la pagina dei prodotti che acquisteranno oquella del carrello della spesa,da cui controlleranno l’ordine e eventualmente lomodificheranno. L’utente può navigare come registrato. Esaminato il riepilogo d’ordinefinale il sistema chiederà il riconoscimento dell’utente;se egli è già registrato i suoi datisono già presenti,altrimenti se ne richiederà l’iscrizione. Se soddisfatti dei propriacquisti,gli utenti pagheranno,inserendo le informazioni di utente,spedizione e pagamento.Se la transazione riesce e l’ordine è accettato,l’utente ne riceve comunicazione tramiteuna pagina. Accedendo dalla home page è possibile individuare degli strati gerarchici dinavigazione,ovviamente percorribili anche in direzione down-up. La segnalazione di erroripuò verificarsi in ogni posizione e in questi schemi viene omessa.PRIMO STRATO:ACCESSO DALLA HOME PAGE(fig.1):si possono visualizzare iprodotti,richiedere un aiuto,visualizzare il contenuto del carrello tramite il mostracarrello;da questo si può ritornare a visionare i prodotti e effettuare il saldo;dopo l’aiuto èpossibile rivedere i prodotti. DALLA RETE:: DALLA RETE HOME PAGE MOSTRA PRODOTTI MOSTRA CARRELLO AIUTO SALDO MOSTRA CARRELLO MOSTRA PRODOTTI Figura 1SECONDO STRATO(fig.2):provenendo dal primo strato si possono raggiungere la fasemostra prodotti in cui si possono selezionare gli articoli aggiungendoli o togliendoli,qualorasi percorra la gerarchia al contrario e controllare il contenuto del carrello;oppure sicontrolla se il cliente è registrato oppure no;se sì è possibile controllare le informazioni dispedizione;altrimenti queste si possono inserire una volta che ci si è iscritti. progettazione e sviluppo di un’applicazione per commercio elettronico 3
  4. 4. tesi di laurea triennale in ingegneria informatica DAL PRIIMO STRATO:: DAL PR MO STRATO MOSTRA PRODOTTI AGGIUNGI/TOGLI MOSTRA CARRELLO UTENTE REGISTRATO INFORMAZIONI SPEDIZIONE Figura 2TERZO STRATO(fig. 3):provenendo dal secondo livello ci si accerta delle informazioniutente,di spedizione o pagamento e passare indifferentemente da una all’altra;inoltre èsempre possibile sincerarsi del dettaglio ordine. DAL SECONDO STRATO:: DAL SECONDO STRATO INFORMAZIONI UTENTE INFORMAZIONI SPEDIZIONE DETTAGLIO ORDINE INFORMAZIONI SPEDIZIONE INFORMAZIONI PAGAMENTO DETTAGLIO ORDINE INFORMAZIONI PAGAMENTO DETTAGLIO ORDINE Figura 3QUARTO STRATO(fig. 4):dopo aver verificato l’ordine lo si può effettuare ocontrollare/modificare le informazioni inserite e poi eseguire l’ordine;quindi si constata ilsuccesso di questo;oppure si può uscire con un menu esterno al carrello e tornare avisualizzare i prodotti. DAL TERZO STRATO:: DAL TERZO STRATO progettazione e sviluppo di un’applicazione per commercio elettronico 4
  5. 5. tesi di laurea triennale in ingegneria informatica DETTAGLIO ORDINE INFORMAZIONI UTENTE INFORMAZIONI SPEDIZIONE INFORMAZIONI PAGAMENTO SUCCESSO SUCCESSO ORDINE APPROVATO MENU ESTERNO MOSTRA PRODOTTI MOSTRA CARRELLO AIUTO Figura 4I settori da esaminare nell’applicativo sono: Struttura:la struttura deve essere supportata da un database che contempla tre ordini di gestioni:lista prodotti,una lista temporanea o carrello e acquisti o lista ordinativi. Sicurezza dei dati:rappresenta la parte delicata dell’applicativo. I dati delle carte di credito vanno trasmessi in modo codificato. Memorizzarli sul server significa esporli in una posizione pericolosa e soggetta ad attacchi;non farlo provoca all’utente il disagio di dover ridigitare i dati ad ogni sessione di pagamento. Qui si è scelto di non conservarne l’archivio storico per motivi che verranno esplicitati nelle conclusioni finali. Per la crittografia è opportuno richiedere un certificato web(CA) e usare uno strato di sicurezza(SSL) del protocollo di trasporto(livello 4 OSI). Catalogo prodotti:è una lista degli articoli in vendita;l’utente li visualizza con tutte le caratteristiche(titolo,autore,genere,etc.se è un libro;marca,tipo,etc.se è un televisore,etc.).Lo scopo è di costruire un’infrastruttura di database scalabile ed estendibile,non un database. In questo caso,esso conterrà una sola tipologia di prodotto,cioè dei dischi in vinile,contraddistinti principalmente da autore,titolo,genere,anno,etichetta.Acquisito il risultato finale,si potrà configurare il sistema con qualsivogliano n prodotti appartenenti a x tipologie differenti,basandosi sui numerosi esempi di database presenti in rete. L’ eventuale aggiunta di ulteriori tipologie di prodotti arricchirà la sottocategoria della radice prodotti. Carrello della spesa:è la lista contenente gli articoli da acquistare;se un articolo da inserire non c’è,viene inserito;altrimenti viene incrementata la quantità dello stesso di un’unità.Il sistema assegna un carrello diverso ad ogni utente e memorizza i dati di questa sessione;a termine sessione si perdono i dati se non viene conclusa la transazione,quindi non è previsto un archivio storico. Salvando la coppia carrello- utente nel database si potrebbe assegnare lo stesso carrello all’utente in una sessione diversa(con i cookies).Ciò comporterebbe una gestione più complessa,ma consentirebbe anche la consultazione dell’archivio storico.Nelle conclusioni verranno meglio specificate le motivazioni della scelta. progettazione e sviluppo di un’applicazione per commercio elettronico 5
  6. 6. tesi di laurea triennale in ingegneria informatica Informazioni:per concretizzare gli ordini servono tre tipi diversi di informazioni cioè di utente,di spedizione e di pagamento;sul primo tipo sono essenziali nome e cognome,indirizzo fisico e virtuale(E-mail),numero di telefono e password;sul secondo tipo nome e indirizzo;sul terzo le modalità di pagamento;se si sceglie la carta di credito la gestione dati viene affidata ad un esterno(vedi la voce Pagamenti sotto),altrimenti sono previsti contrassegno o bonifico bancario che prevedono il pagamento off-line. Pagamenti:avere un server dedicato per questo genere di elaborazioni presuppone una dimensione rilevante dovuta al costo,alla manutenzione e gestione. Delegando la gestione dei pagamenti ad un provider esterno si superano questi problemi. E’ necessario quindi avvalersi di un account da un fornitore di servizi bancari e integrare i moduli e le librerie installandoli nel proprio sistema. Ordini:ogni ordine è un’ entità,ha suo progressivo ed è corredato dalle informazioni dell’importo di ogni singola voce(prodotto x,prodotto y,spedizione,tasse). La registrazione dell’ordine nel database avviene dopo la conferma del pagamento.Questa ha un numero d’ordine che viene memorizzato e aggiorna lo stato dell’ordine.Quindi si comunica tramite E-mail il successo o meno dell’operazione. Elementi dell’ordine:si stabilisce un’entità che possiede un’identificatore per ogni elemento del catalogo e il suo prezzo unitario.Questi vengono poi associati all’identificativo dell’ordine assieme alla quantità prescelta.LAYOUT DELLE PAGINEAttraverso gli schemi dei 4 strati e i settori studiati si giunge al seguente schema cheesplicita il layout delle pagine.Da questo si ricaveranno i moduli delle pagine o mascherenella fase successiva di progettazione.Si può giungere alla pagina di errore da unaqualunque pagina qualora se ne riscontri uno.Anche gli aiuti sono raggiungibili dalla quasitotalità delle pagine.La home page è la pagina principale da cui si accede;da essa si puòarrivare nella pagina dei prodotti,in quella del carrello o in quella del saldo.Da questa siraggiunge la pagina utente se egli è riconosciuto dal sistema,altrimenti si viene indirizzatialla pagina nuovo utente da cui si accede poi a quest’ultima,terminata l’acquisizionecorretta dei dati.Seguono poi l’inserimento dei dati di spedizione e pagamento e infine ilresoconto finale dell’ordine che culmina con il completamento ordine e il suo eventualesuccesso comunicato all’utente.Quindi è possibile ritornare alla home page.Naturalmenteè possibile saltare indifferentemente tra ciascuna fasedati(spedizione,utente,pagamento)purché le informazioni vengano inserite tutte.Loschema è rappresentato nella figura 5. progettazione e sviluppo di un’applicazione per commercio elettronico 6
  7. 7. tesi di laurea triennale in ingegneria informatica HOME PAGE AIUTO PRODOTTI CARRELLO SALDO ERRORE NUOVO UTENTE UTENTE SPEDIZIONE PAGAMENTO DETTAGLIO ORDINE ORDINE COMPLETATO PAGINA WEB SUCCESSO ORDINE Figura 5Quindi si individuano le seguenti pagine necessarie:• Home page(HOME):la pagina di inizio navigazione,la root directory;• Aiuto(AIUTO):la pagina di informazioni per assistere l’utente;• Errore(ERRORE):la pagina per visualizzare gli errori;• Mostra prodotti(MOSTRAPRO):la pagina di visualizzazione dei prodotti da cui si selezionano i prodotti;• Mostra carrello(MOSTRACAR):la pagina di visualizzazione del contenuto dell’ordine in tempo reale;l’utente sceglie se completare l’ordine o modificarlo;• Saldo o checkout(SALDO):la pagina iniziale della procedura di pagamento da cui effettuare il login se si è utenti iscritti o iscriversi come nuovi utenti;• Informazioni utente(INFOUT):la pagina dove vengono inseriti i dati personali dell’acquirente; progettazione e sviluppo di un’applicazione per commercio elettronico 7
  8. 8. tesi di laurea triennale in ingegneria informatica• Informazioni spedizione(INFOSPED):la pagina dove vengono inserite le informazioni riguardanti l’invio delle merci comprate;• Informazioni pagamento(INFOPAG):la pagina dove vengono inserite le informazioni di pagamento,compresi gli estremi delle carte di credito;• Dettaglio ordine(DETORD):la pagina che riassume l’acquisto,consultabile dall’utente prima dello stesso;• Successo(SUCCESSO):la pagina di conferma ordine quando è terminato.DATABASEBisogna scegliere il motore di memorizzazione,ma ciò verrà attuato nella fase successiva.Si identificano due strati,il primo concerne l’infrastruttura vera e propria adattabile ad unqualunque negozio x,il secondo è riferito a questo particolare esempio comprensivo delcatalogo dischi.In figura 6 è riportato lo schema E-R dell’applicativo.Le due strutturegenerica e particolare sono suddivise.La root directory del negozio è la tabellaprodotto,che in questo caso particolare coincide con la tabella album,poiché in questoesempio si è scelto di vendere esclusivamente dischi.Se si desiderano vendere unamolteplicità di prodotti,la tabella prodotto fungerà da tabella radice da cui partire perramificare tutti gli articoli che si venderanno.Viene inoltre introdotta una tabella opzionalecarte di credito creata per effettuare la simulazione di un pagamento e testare lacorrettezza del prodotto finale,ma non prevista nel prodotto finale dell’applicativo.Infatti,come già scritto precedentemente,le procedure dei pagamenti saranno affidati adesterni.Le tabelle dell’infrastruttura prevedono un ordine(tabella ordine) composto da totarticoli che ne costituiscono gli elementi(tabella elementi ordine),uno statusdell’ordine(tabella status ordine) che ne indica lo stato di avanzamento e un’utente(tabellautente),cui questo ordine è associato. Il prodotto venduto che è in questo caso sempre unalbum(tabella album) appartiene ad un genere musicale(tabella genere),è stato inciso dauno o più artisti(tabella artista) e ed è prodotto da un’etichetta o casa discografica(tabellaetichetta).Il rapporto numerico tra tabelle è comunque indicato nello schema. progettazione e sviluppo di un’applicazione per commercio elettronico 8
  9. 9. tesi di laurea triennale in ingegneria informatica (1,N) ORDIINE ORD NE (1,1) (1,N) VERIIFIICA VER F CA COMPOSIIZIIONE COMPOS Z ONE ASSOCIIAZIIONE ASSOC AZ ONE (1,N) (1,N) (1,N) STATUS STATUS ELEMENTII ELEMENT UTENTE UTENTE ORDIINE ORD NE ORDIINE ORD NE (1,N) IINFRASTRUTTURA NFRASTRUTTURA IINFRASTRUTTURA NFRASTRUTTURA SCELTA SCELTA ESEMPIIO DIISCHII ESEMP O D SCH ESEMPIIO DIISCHII ESEMP O D SCH (1,N) (1,N) PRODOTTO= PRODOTTO= (1,1) ALBUM ALBUM (1,1) IINCIIDE NC DE POSSIIEDE POSS EDE PRODOTTO PRODOTTO (1,N) (1,N) (1,N) ARTIISTA ART STA GENERE GENERE ETIICHETTA ET CHETTA Figura 6Nella successiva figura 7 è invece rappresentata la costruzione delle tabelle comprensivadei campi,chiavi primarie,chiavi esterne e i collegamenti tra loro. progettazione e sviluppo di un’applicazione per commercio elettronico 9
  10. 10. tesi di laurea triennale in ingegneria informatica STATUSOR STATUSOR STATUSOR ORDIIINE ORD N E ORD NE UTENTIII UTENT UTENT 1 1 1 PK PK PK IIID_STATUS D _STATUS D_STATUS PK PK PK IIID_ALBUM D _ALBUM D_ALBUM PK PK PK IIID_UTENTE D _UTENTE D_UTENTE N STATO STATO STATO FK FK FK IIID_ST D _ST D_ST NOME NOME NOME N FK FK FK IIID_UT D _UT D_UT AZIIIENDA AZ E NDA AZ ENDA NOME_SPED NOME_SPED NOME_SPED IIINDIIIRIIIZZO1 N D R Z ZO1 ND R ZZO1 AZIIIENDA_SPED AZ E NDA_SPED AZ ENDA_SPED IIINDIIIRIIIZZO2 N D R Z ZO2 ND R ZZO2 IIINDIIIRIIIZZO1_SPED N D R Z ZO1_SPED ND R ZZO1_SPED CIIITTA’’’ C T TA C TTA ELORD ELORD ELORD IIINDIIIRIIIZZO 2_SPED N D R Z Z O 2 _ SPED ND R ZZO 2_SPED STATO STATO STATO PK PK PK IIID_ELORD D _ELORD D_ELORD CIIITTA’’’_SPED C T TA _ SPED C TTA _SPED CAP CAP CAP N FK FK FK IIID_ORD D _ORD D_ORD STATO_SPED STATO_SPED STATO_SPED NAZIIIONE NAZ O NE NAZ ONE FK FK FK IIID_ALB D _ALB D_ALB CAP_SPED CAP_SPED CAP_SPED TELEFONO TELEFONO TELEFONO N PREZZO PREZZO PREZZO NAZIIIONE_SPED NAZ O NE_SPED NAZ ONE_SPED EMAIIIL EMA L EMA L PEZZIII PEZ Z PEZ Z TELEFONO_SPED TELEFONO_SPED TELEFONO_SPED PASSW ORD PASSW ORD PASSW ORD COSTO_ORD COSTO_ORD COSTO_ORD COSTO_SPED COSTO_SPED COSTO_SPED COSTO_TOTALE COSTO_TOTALE COSTO_TOTALE TIIIPO_PAGAMENTO T P O_PAGAMENTO T PO_PAGAMENTO CONFERMA_PAGA CONFERMA_PAGA CONFERMA_PAGA STATO_ORDIIINE STATO_ORD N E STATO_ORD NE ESECUTORE_ORD ESECUTORE_ORD ESECUTORE_ORDIINFRASTRUTTURA NFRASTRUTTURAESEMPIIO DIISCHII ESEMP O D SCH PRODOTTO=ALBUM PRODOTTO=ALBUM PRODOTTO=ALBUM 1 ARTIIISTA ART S TA ART STA PK PK PK IIID_ALBUM D _ALBUM D_ALBUM 1 NPKPKPK IIID_ART D _ART D_ART FK FK FK IIID_ARTIIISTA D _ART S TA D_ART STA ETIIICHETTA ET C HETTA ET CHETTA N 1 NOME NOME NOME FK FK FK IIID_ETIIICHETTA D _ET C HETTA D_ET CHETTA PK PK PK IIID_ETIII D _ET D_ET N FK FK FK IIID_GENERE D _GENERE D_GENERE NOME NOME NOME TIIITOLO T T OLO T TOLO GENERE GENERE GENERE DESCRIIIZIIIONE DESCR Z O NE DESCR Z ONE 1PKPKPK IIID_GEN D _GEN D_GEN IIIMMAGIIINE M MAG N E MMAG NE NOME NOME NOME PREZZO PREZZO PREZZO LEGENDA::: LEGENDA LEGENDA ENTIIITY ENT T Y ENT TY IIID_FIIIELD D _F E LD D_F ELD PRIIIMARY KEY PR M ARY KEY PR MARY KEY FOREIIIGN KEY FORE G N KEY FORE GN KEY FIIIELD F E LD F ELD Figura 7 progettazione e sviluppo di un’applicazione per commercio elettronico 10
  11. 11. tesi di laurea triennale in ingegneria informaticaQuindi si esplicitano le tabelle(dalla 1 alla 5 sono dell’infrastruttura;dalla 6 alla 9 sonodell’esempio) e i loro contenuti secondo il seguente schema: TABELLA ELORD(ELEMENTI ORDINE)PRIIIMARY KEYPR M ARY KEYPR MARY KEY IIID_ELORD D _ELORD D_ELORD CONTATORE A CHIIIAVE PRIIIMARIIIA AGGIIIORNATO AUTOMATIIICAMENTE...IINTERIII.. CONTATORE A CH A VE PR M AR A AGG O RNATO AUTOMAT C AMENTE IN TER . CONTATORE A CH AVE PR MAR A AGG ORNATO AUTOMAT CAMENTE NTERFOREIIIGN KEYFORE G N KEYFORE GN KEY IIID_ORD D _ORD D_ORD CONTATORE A CHIIIAVE ESTERNA PER VIIINCOLO DIII REFERENZIIIAZIIIONE CON LA CONTATORE A CH A VE ESTERNA PER V N COLO D REFERENZ A Z O NE CON LA CONTATORE A CH AVE ESTERNA PER V NCOLO D REFERENZ AZ ONE CON LA TABELLA ORDIIINE...IINTERIII NON NULLIII.. TABELLA ORD N E IN TER NON NULL . TABELLA ORD NE NTER NON NULLFOREIIIGN KEYFORE G N KEYFORE GN KEY IIID_ALB D _ALB D_ALB CONTATORE A CHIIIAVE ESTERNA PER VIIINCOLO DIII REFERENZIIIAZIIIONE CON LA CONTATORE A CH A VE ESTERNA PER V N COLO D REFERENZ A Z O NE CON LA CONTATORE A CH AVE ESTERNA PER V NCOLO D REFERENZ AZ ONE CON LA TABELLA ALBUM((PRODOTTO))..IINTERIII NON NULLIII.. TABELLA ALBUM(P RODOTTO).IN TER NON NULL . TABELLA ALBUM PRODOTTO NTER NON NULL FIIIELD F E LD F ELD PREZZO PREZZO PREZZO CAMPO:::STRIIINGA NUMERIIICA <=6CARATTERIII+2 DECIIIMALIII NON NULLA... CAMPO S TR N GA NUMER C A <=6CARATTER + 2 DEC M AL NON NULLA CAMPO STR NGA NUMER CA <=6CARATTER +2 DEC MAL NON NULLA FIIIELD F E LD F ELD PEZZIII PEZZ PEZZ CAMPO:::STRIIINGA NUMERIIICA <=4 CARATTERIII CON IIINTERIII NON NULLIII.. CAMPO S TR N GA NUMER C A <=4 CARATTER CON N TER NON NULL . CAMPO STR NGA NUMER CA <=4 CARATTER CON NTER NON NULLTabella 1 TABELLA ORDINEPRIIIMARY KEYPR M ARY KEYPR MARY KEY IIID_ORDIIINE D _ORD N E D_ORD NE CONTATORE A CHIIIAVE PRIIIMARIIIA AGGIIIORNATO AUTOMATIIICAMENTE...IINTERIII.. CONTATORE A CH A VE PR M AR A AGG O RNATO AUTOMAT C AMENTE IN TER . CONTATORE A CH AVE PR MAR A AGG ORNATO AUTOMAT CAMENTE NTERFOREIIIGN KEYFORE G N KEYFORE GN KEY IIID_UT D _UT D_UT CONTATORE A CHIIIAVE ESTERNA PER VIIINCOLO DIII REFERENZIIIAZIIIONE CON LA CONTATORE A CH A VE ESTERNA PER V N COLO D REFERENZ A Z O NE CON LA CONTATORE A CH AVE ESTERNA PER V NCOLO D REFERENZ AZ ONE CON LA TABELLA UTENTE...IINTERIII NON NULLIII.. TABELLA UTENTE IN TER NON NULL . TABELLA UTENTE NTER NON NULLFOREIIIGN KEYFORE G N KEYFORE GN KEY IIID_ST D _ST D_ST CONTATORE A CHIIIAVE ESTERNA PER VIIINCOLO DIII REFERENZIIIAZIIIONE CON LA CONTATORE A CH A VE ESTERNA PER V N COLO D REFERENZ A Z O NE CON LA CONTATORE A CH AVE ESTERNA PER V NCOLO D REFERENZ AZ ONE CON LA TABELLA STATUS_OR((STATO DELL’’ORDIIINE))..IINTERIII NON NULLIII.. TABELLA STATUS_OR(S TATO DELL ’ORD N E).IN TER NON NULL . TABELLA STATUS_OR STATO DELL ORD NE NTER NON NULL FIIIELD F E LD F ELD NOME_SPED NOME_SPED NOME_SPED CAMPO:::STRIIINGA ALFANUMERIIICA <=120 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=120 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=120 CARATTER NON NULL FIIIELD F E LD F ELD AZIIIENDA_SPED AZ E NDA_SPED AZ ENDA_SPED CAMPO:::STRIIINGA ALFANUMERIIICA <=140 CARATTERIII.. CAMPO S TR N GA ALFANUMER C A <=140 CARATTER . CAMPO STR NGA ALFANUMER CA <=140 CARATTER FIIIELD F E LD F ELD IIINDIIIRIIIZZO1_SPE N D R Z ZO1_SPE ND R ZZO1_SPE CAMPO:::STRIIINGA ALFANUMERIIICA <=150 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=150 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=150 CARATTER NON NULL DD D FIIIELD F E LD F ELD IIINDIIIRIIIZZO2_SPE N D R Z ZO2_SPE ND R ZZO2_SPE CAMPO:::STRIIINGA ALFANUMERIIICA <=150 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=150 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=150 CARATTER NON NULL DD D FIIIELD F E LD F ELD CIIITTA’’_SPED C T TA ’_SPED C TTA _SPED CAMPO:::STRIIINGA ALFANUMERIIICA <=100 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=100 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=100 CARATTER NON NULL FIIIELD F E LD F ELD STATO _SPED STATO _SPED STATO _SPED CAMPO:::STRIIINGA ALFANUMERIIICA <=100 CARATTERIII.. CAMPO S TR N GA ALFANUMER C A <=100 CARATTER . CAMPO STR NGA ALFANUMER CA <=100 CARATTER FIIIELD F E LD F ELD CAP_SPED CAP_SPED CAP_SPED CAMPO:::STRIIINGA NUMERIIICA =10 CARATTERIII IIINTERIII NON NULLIII.. CAMPO S TR N GA NUMER C A =10 CARATTER N TER NON NULL . CAMPO STR NGA NUMER CA =10 CARATTER NTER NON NULL FIIIELD F E LD F ELD NAZIIIONE_SPED NAZ O NE_SPED NAZ ONE_SPED CAMPO:::STRIIINGA ALFANUMERIIICA <=100 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=100 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=100 CARATTER NON NULL FIIIELD F E LD F ELD TELEFONO_SPE TELEFONO_SPE TELEFONO_SPE CAMPO:::STRIIINGA NUMERIIICA <=20 CARATTERIII IIINTERIII NON NULLIII.. CAMPO S TR N GA NUMER C A <=20 CARATTER N TER NON NULL . CAMPO STR NGA NUMER CA <=20 CARATTER NTER NON NULL DD D FIIIELD F E LD F ELD COSTO_ORDIIINE COSTO_ORD N E COSTO_ORD NE CAMPO:::STRIIINGA NUMERIIICA <=6CARATTERIII+2 DECIIIMALIII NON NULLA... CAMPO S TR N GA NUMER C A <=6CARATTER + 2 DEC M AL NON NULLA CAMPO STR NGA NUMER CA <=6CARATTER +2 DEC MAL NON NULLA FIIIELD F E LD F ELD COSTO_SPED COSTO_SPED COSTO_SPED CAMPO:::STRIIINGA NUMERIIICA <=6CARATTERIII+2 DECIIIMALIII NON NULLA... CAMPO S TR N GA NUMER C A <=6CARATTER + 2 DEC M AL NON NULLA CAMPO STR NGA NUMER CA <=6CARATTER +2 DEC MAL NON NULLA FIIIELD F E LD F ELD COSTO_TOTALE COSTO_TOTALE COSTO_TOTALE CAMPO:::STRIIINGA NUMERIIICA <=6CARATTERIII+2 DECIIIMALIII NON NULLA... CAMPO S TR N GA NUMER C A <=6CARATTER + 2 DEC M AL NON NULLA CAMPO STR NGA NUMER CA <=6CARATTER +2 DEC MAL NON NULLA FIIIELD F E LD F ELD TIIIPO_PAGAMEN T P O_PAGAMEN T PO_PAGAMEN CAMPO:::STRIIINGA ALFANUMERIIICA <=50 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=50 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=50 CARATTER NON NULL TO TO TO FIIIELD F E LD F ELD CONFERMA_PA CONFERMA_PA CONFERMA_PA CAMPO:::STRIIINGA ALFANUMERIIICA <=80 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=80 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=80 CARATTER NON NULL GA GA GA FIIIELD F E LD F ELD STATO_ORDIIINE STATO_ORD N E STATO_ORD NE CAMPO:::STRIIINGA ALFANUMERIIICA CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA CARATTER NON NULL FIIIELD F E LD F ELD ESECUTORE_O ESECUTORE_O ESECUTORE_O CAMPO:::STRIIINGA ALFANUMERIIICA <=80 CARATTERIII.. CAMPO S TR N GA ALFANUMER C A <=80 CARATTER . CAMPO STR NGA ALFANUMER CA <=80 CARATTER RD RD RDTabella 2 TABELLA STATUSORPRIIIMARY KEYPR M ARY KEYPR MARY KEY IIID_STATUS D _STATUS D_STATUS CONTATORE A CHIIIAVE PRIIIMARIIIA AGGIIIORNATO AUTOMATIIICAMENTE...IINTERIII.. CONTATORE A CH A VE PR M AR A AGG O RNATO AUTOMAT C AMENTE IN TER . CONTATORE A CH AVE PR MAR A AGG ORNATO AUTOMAT CAMENTE NTER FIIIELD F E LD F ELD STATO STATO STATO CAMPO:::STRIIINGA ALFANUMERIIICA <=50 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=50 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=50 CARATTER NON NULLTabella 3 TABELLA UTENTIPRIIIMARY KEYPR M ARY KEYPR MARY KEY IIID_UTENTE D _UTENTE D_UTENTE CONTATORE A CHIIIAVE PRIIIMARIIIA AGGIIIORNATO AUTOMATIIICAMENTE...IINTERIII.. CONTATORE A CH A VE PR M AR A AGG O RNATO AUTOMAT C AMENTE IN TER . CONTATORE A CH AVE PR MAR A AGG ORNATO AUTOMAT CAMENTE NTER FIIIELD F E LD F ELD NOME NOME NOME CAMPO:::STRIIINGA ALFANUMERIIICA <=120 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=120 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=120 CARATTER NON NULL FIIIELD F E LD F ELD AZIIIENDA AZ E NDA AZ ENDA CAMPO:::STRIIINGA ALFANUMERIIICA <=140 CARATTERIII.. CAMPO S TR N GA ALFANUMER C A <=140 CARATTER . CAMPO STR NGA ALFANUMER CA <=140 CARATTER FIIIELD F E LD F ELD IIINDIIIRIIIZZO1 N D R Z ZO1 ND R ZZO1 CAMPO:::STRIIINGA ALFANUMERIIICA <=150 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=150 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=150 CARATTER NON NULL FIIIELD F E LD F ELD IIINDIIIRIIIZZO2 N D R Z ZO2 ND R ZZO2 CAMPO:::STRIIINGA ALFANUMERIIICA <=150 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=150 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=150 CARATTER NON NULL FIIIELD F E LD F ELD CIIITTA’’’ C T TA C TTA CAMPO:::STRIIINGA ALFANUMERIIICA <=100 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=100 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=100 CARATTER NON NULL FIIIELD F E LD F ELD STATO STATO STATO CAMPO:::STRIIINGA ALFANUMERIIICA <=100 CARATTERIII.. CAMPO S TR N GA ALFANUMER C A <=100 CARATTER . CAMPO STR NGA ALFANUMER CA <=100 CARATTER FIIIELD F E LD F ELD CAP CAP CAP CAMPO:::STRIIINGA NUMERIIICA =10 CARATTERIII IIINTERIII NON NULLIII.. CAMPO S TR N GA NUMER C A =10 CARATTER N TER NON NULL . CAMPO STR NGA NUMER CA =10 CARATTER NTER NON NULL FIIIELD F E LD F ELD NAZIIIONE NAZ O NE NAZ ONE CAMPO:::STRIIINGA ALFANUMERIIICA <=100 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=100 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=100 CARATTER NON NULL FIIIELD F E LD F ELD TELEFONO TELEFONO TELEFONO CAMPO:::STRIIINGA NUMERIIICA <=20 CARATTERIII IIINTERIII NON NULLIII.. CAMPO S TR N GA NUMER C A <=20 CARATTER N TER NON NULL . CAMPO STR NGA NUMER CA <=20 CARATTER NTER NON NULL FIIIELD F E LD F ELD EMAIIIL EMA L EMA L CAMPO:::STRIIINGA ALFANUMERIIICA <=100 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=100 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=100 CARATTER NON NULL FIIIELD F E LD F ELD PASSWORD PASSWORD PASSWORD CAMPO:::STRIIINGA ALFANUMERIIICA <=100 CARATTERIII NON NULLIII CONTENENTIII ““@””.. CAMPO S TR N GA ALFANUMER C A <=100 CARATTER NON NULL CONTENENT “@ ”. CAMPO STR NGA ALFANUMER CA <=100 CARATTER NON NULL CONTENENT @Tabella 4Tabella 5 progettazione e sviluppo di un’applicazione per commercio elettronico 11
  12. 12. tesi di laurea triennale in ingegneria informatica INFRASTRUTTURA ESEMPIO DISCHI TABELLA ALBUM(=PRODOTTI)PRIIIMARY KEYPR M ARY KEYPR MARY KEY IIID_ALBUM D _ALBUM D_ALBUM CONTATORE A CHIIIAVE PRIIIMARIIIA AGGIIIORNATO AUTOMATIIICAMENTE...IINTERIII.. CONTATORE A CH A VE PR M AR A AGG O RNATO AUTOMAT C AMENTE IN TER . CONTATORE A CH AVE PR MAR A AGG ORNATO AUTOMAT CAMENTE NTERFOREIIIGN KEYFORE G N KEYFORE GN KEY IIID_ARTIIISTA D _ART S TA D_ART STA CONTATORE A CHIIIAVE ESTERNA PER VIIINCOLO DIII REFERENZAZIIIONE CON LA TABELLA CONTATORE A CH A VE ESTERNA PER V N COLO D REFERENZAZ O NE CON LA TABELLA CONTATORE A CH AVE ESTERNA PER V NCOLO D REFERENZAZ ONE CON LA TABELLA ARTIIISTA...IINTERIII NON NULLIII.. ART S TA IN TER NON NULL . ART STA NTER NON NULLFOREIIIGN KEYFORE G N KEYFORE GN KEY IIID_ETIIICHETTA D _ET C HETTA D_ET CHETTA CONTATORE A CHIIIAVE ESTERNA PER VIIINCOLO DIII REFERENZAZIIIONE CON LA TABELLA CONTATORE A CH A VE ESTERNA PER V N COLO D REFERENZAZ O NE CON LA TABELLA CONTATORE A CH AVE ESTERNA PER V NCOLO D REFERENZAZ ONE CON LA TABELLA ETIIICHETTA...IINTERIII NON NULLIII.. ET C HETTA IN TER NON NULL . ET CHETTA NTER NON NULLFOREIIIGN KEYFORE G N KEYFORE GN KEY IIID_GENERE D _GENERE D_GENERE CONTATORE A CHIIIAVE ESTERNA PER VIIINCOLO DIII REFERENZAZIIIONE CON LA TABELLA CONTATORE A CH A VE ESTERNA PER V N COLO D REFERENZAZ O NE CON LA TABELLA CONTATORE A CH AVE ESTERNA PER V NCOLO D REFERENZAZ ONE CON LA TABELLA GENERE...IINTERIII NON NULLIII.. GENERE IN TER NON NULL . GENERE NTER NON NULL FIIIELD F E LD F ELD IIIMMAGIIINE M MAG N E MMAG NE CAMPO:::STRIIINGA ALFANUMERIIICA <=50 CARATTERIII NON NULLIII.. CONTIIIENE IIIL NOME CAMPO S TR N GA ALFANUMER C A <=50 CARATTER NON NULL . CONT E NE L NOME CAMPO STR NGA ALFANUMER CA <=50 CARATTER NON NULL CONT ENE L NOME DELL’’IIIMMAGIIINE IIIN FORMATO ...JPG... DELL ’ M MAG N E N FORMATO J PG DELL MMAG NE N FORMATO JPG FIIIELD F E LD F ELD DESCRIIIZIIIONE DESCR Z O NE DESCR Z ONE CAMPO:::STRIIINGA DESCRIIITTIIIVA DIII TESTO... CAMPO S TR N GA DESCR T T V A D TESTO CAMPO STR NGA DESCR TT VA D TESTO FIIIELD F E LD F ELD TIIITOLO T T OLO T TOLO CAMPO:::STRIIINGA ALFANUMERIIICA <=100 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=100 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=100 CARATTER NON NULL FIIIELD F E LD F ELD PREZZO PREZZO PREZZO CAMPO:::STRIIINGA NUMERIIICA <=6CARATTERIII+2 DECIIIMALIII NON NULLA... CAMPO S TR N GA NUMER C A <=6CARATTER + 2 DEC M AL NON NULLA CAMPO STR NGA NUMER CA <=6CARATTER +2 DEC MAL NON NULLATabella 6 TABELLA ARTISTAPRIIIMARY KEYPR M ARY KEYPR MARY KEY IIID_ART D _ART D_ART CONTATORE A CHIIIAVE PRIIIMARIIIA AGGIIIORNATO AUTOMATIIICAMENTE...IINTERIII.. CONTATORE A CH A VE PR M AR A AGG O RNATO AUTOMAT C AMENTE IN TER . CONTATORE A CH AVE PR MAR A AGG ORNATO AUTOMAT CAMENTE NTER FIIIELD F E LD F ELD NOME NOME NOME CAMPO:::STRIIINGA ALFANUMERIIICA <=100 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=100 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=100 CARATTER NON NULLTabella 7 TABELLA ETICHETTAPRIIIMARY KEYPR M ARY KEYPR MARY KEY IIID_ETIII D _ET D_ET CONTATORE A CHIIIAVE PRIIIMARIIIA AGGIIIORNATO AUTOMATIIICAMENTE...IINTERIII.. CONTATORE A CH A VE PR M AR A AGG O RNATO AUTOMAT C AMENTE IN TER . CONTATORE A CH AVE PR MAR A AGG ORNATO AUTOMAT CAMENTE NTER FIIIELD F E LD F ELD NOME NOME NOME CAMPO:::STRIIINGA ALFANUMERIIICA <=100 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=100 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=100 CARATTER NON NULLTabella 8 TABELLA GENEREPRIIIMARY KEYPR M ARY KEYPR MARY KEY IIID_GEN D _GEN D_GEN CONTATORE A CHIIIAVE PRIIIMARIIIA AGGIIIORNATO AUTOMATIIICAMENTE...IINTERIII.. CONTATORE A CH A VE PR M AR A AGG O RNATO AUTOMAT C AMENTE IN TER . CONTATORE A CH AVE PR MAR A AGG ORNATO AUTOMAT CAMENTE NTER FIIIELD F E LD F ELD NOME NOME NOME CAMPO:::STRIIINGA ALFANUMERIIICA <=50 CARATTERIII NON NULLIII.. CAMPO S TR N GA ALFANUMER C A <=50 CARATTER NON NULL . CAMPO STR NGA ALFANUMER CA <=50 CARATTER NON NULLTabella 93. Progettazione:la composizione dei campi delle tabelle avrebbe potuto ancherientrare nella fase di progettazione,tuttavia si è preferito aggiungerla alla fase di analisipoiché diretta conseguenza dei requisiti posseduti dalle stesse e per rendere più compattala descrizione del database.Partendo dall’individuazione,al passo precedente,delle pagine costituenti la struttura se neindividuano i file relativi che saranno implementati in moduli con linguaggio .php.Il titolo intesta maiuscolo si riferisce alle pagine determinate nella fase di analisi: HOME PAGE(home.php):la pagina iniziale da cui l’utente parte per la navigazione nel sito; AIUTO(aiuto.php):la pagina per richiedere aiuto; ERRORE(errore.php):la pagina dedicata alla visualizzazione degli errori; progettazione e sviluppo di un’applicazione per commercio elettronico 12
  13. 13. tesi di laurea triennale in ingegneria informatica MOSTRAPRO(mostrapro.php):la pagina da cui si visualizzano i prodotti da acquistare; MOSTRACAR(mostracar.php):la pagina di visualizzazione del contenuto carrello;qui alternativamente si decide di continuare l’ordine o completarlo pagando; SALDO(saldo.php):la pagina dove effettuare il login se registrati o alternativamente dove registrarsi;è la quietanza del pagamento; INFOUT(infout.php):la pagina in cui inserire i dati personali e di fatturazione; INFOSPED(infosped.php):la pagina in cui inserire le informazioni a cui spedire l’ordine; INFOPAG(infopag.php):la pagina in cui vengono inserite le informazioni di pagamento; DETORD(detord.php):la pagina in cui vengono riassunte le informazioni dell’ordine anche prima del pagamento;l’utente sceglie se confermare l’ordine o modificarlo; SUCCESSO(successo.php):la pagina in cui si visualizza il successo dell’operazione ordine.Accanto ai file di pagina utente sono previsti dei file sempre in linguaggio .php utilizzabilicome script di elaborazione.Essi riguardano: AGGIUNGI(aggiungi.php):l’utente che desidera un prodotto clicca su un pulsante a lato dello stesso e attiva questo script che inserisce l’articolo nel carrello; MODIFICA(modifica.php):l’utente che desidera togliere un articolo o modificarne la quantità aziona questo script che agisce sul carrello; AUTENTICAZIONE(autentica.php):l’utente si autentica con questo script inserendo il suo nome utente e la password; INVIO ORDINE(inviaord.php):l’utente invia l’ordine premendo il pulsante invio;esso può essere convalidato e in tal caso l’utente accede alla pagina con la conferma(successo);in caso contrario viene indirizzato ad una pagina che segnala l’errore; INVIO INFORMAZIONI DI UTENTE(inviaut):questo script si occupa di registrare le informazioni personali e di fatturazione di utente e di verificarne contenuti e l’autenticità. INVIO INFORMAZIONI DI SPEDIZIONE(inviasped):questo script si occupa di registrare le informazioni di spedizione dell’ utente e di verificarne contenuti e l’autenticità. INVIO INFORMAZIONI DI PAGAMENTO(inviapag): questo script si occupa di registrare le informazioni di pagamento dell’ utente e di verificarne contenuti e l’autenticità.Nella successiva fig.8 vengono rappresentati tutti i moduli realizzabili in linguaggio .phpcomprensivi degli script e i collegamenti esistenti tra loro. progettazione e sviluppo di un’applicazione per commercio elettronico 13
  14. 14. tesi di laurea triennale in ingegneria informatica HOME PAGE..php HOME PAGE php NAVIIGAZIIONE NAV GAZ ONEMOSTRACAR..phpMOSTRACAR php MOSTRAPRO..php MOSTRAPRO php SALDO..php SALDO php AIIUTO..php A UTO php AGGIIUNGII..php AGG UNG php MODIIFIICA..php MOD F CA php AUTENTIICA..php AUTENT CA php DAGLII ALTRII DAGL ALTR MODULII MODUL DATII PERSONALII DAT PERSONAL IINFOUT..php NFOUT php IINVIIAUT..php NV AUT php DA OGNII MODULO DA OGN MODULO DATII SPEDIIZIIONE DAT SPED Z ONE ERRORE..php ERRORE php IINFOSPED..php NFOSPED php IINVIIASPED..php NV ASPED php DATII PAGAMENTO DAT PAGAMENTO IINFOPAG..php NFOPAG php IINVIIAPAG..php NV APAG php CONTROLLA CONTROLLA LEGENDA:: LEGENDA SPESA SPESA PAGIINE ..PHP PAG NE PHP DETORD..php DETORD php IINVIIAORD..php NV AORD php SCRIIPT..PHP SCR PT PHP ESIITO ES TO SUCCESSO..php SUCCESSO php AZIIONE AZ ONE Figura 8 progettazione e sviluppo di un’applicazione per commercio elettronico 14
  15. 15. tesi di laurea triennale in ingegneria informaticaBisogna inoltre predisporre dei file inclusivi di libreria con estensione .inc per la definizionedelle classi. In particolare servono: CONNETTI(connetti.inc):è il file contenente le informazioni per connettersi al database; CONNESSIONE AL DB(connesdb.inc):è il file impiegato per l’apertura della sessione col database; ERRORI(errori.inc):è il file contenenti le varie tipologie di errori e in caso questi si verifichino ne informa l’utente e lo indirizza alla pagina più adatta per risolverli; SISTEMA(sistema.inc):è il file contenente l’inclusione degli altri file che gestisce il sistema e lo fa funzionare correttamente; SESSIONE(sessione.inc):è il file contenente i dati di sessione acquisto; GESTIONE CARRELLO(gestcar.inc):è il file che associa i dati della sessione utente agli articoli del carrello; GESTIONE ORDINE(gestord.inc):è il file che gestisce gli ordini; GESTIONE CATALOGO(gestcat.inc):è il file necessario per visualizzare e ottenere i prodotti; GESTIONE UTENTI(gestut.inc):è il file per registrare i nuovi utenti o richiamare le informazioni di quelli già registrati; CONTROLLO(controllo.inc):è il file contenente delle procedure di controllo della correttezza dei dati utente.Nella figura 9 vengono illustrati i file e le relative funzioni da essi svolte.Vengono inoltremessi in luce i principali capisaldi dell’applicativo.Il catalogo,gli ordini,il carrello,leinformazioni utente vengono immagazzinati nel database.Questo deve effettuare unaprocedura di connessione al sistema e aprire una sessione utente.Il database puòmemorizzare le immagini relative ai prodotti oppure contenere dei link per accedere allestesse immagazzinate in un file o cartella a parte.La gestione delle parti “separate”deldatabase è affidato ai relativi file .inc che sono dei file di libreria con la definizione dioggetti e classi.Il file sistema.inc collocato a monte del sistema ha il compito dimonitorarlo.Quello controllo.inc invece esegue dei controlli sull’inserimento dati,cheeventualmente sarebbe estendibile anche al controllo trasmissione dati pagamento concarte di credito.Tuttavia si è scelto,in questo progetto, di delegare tale operazione adesterni. Opzionalmente è possibile creare tali routine in questo file per poi testarne lacorrettezza nella fase di collaudo.La scelta di adoperare i file in formato .inc(o .txt) potrebbe generare delle criticitànell’ambito della sicurezza. Infatti un utente a conoscenza del metodo di programmazionedell’autore potrebbe inserire il path e accedere al contenuto dei file più sensibili.Problemasuperabile modificando eventualmente l’estensione a .php(o .asp in dipendenza dellapiattaforma di lavoro).La preferenza all’impiego dei moduli restanti .php è dettata da motividi ordine economico,che ne decretano inoltre la maggiore popolarità. progettazione e sviluppo di un’applicazione per commercio elettronico 15
  16. 16. tesi di laurea triennale in ingegneria informatica APPLIICATIIVO APPL CAT VO siisttema..iinc s s em a nc SIISTEMA S STEMA connesdb..iinc connesdb nc errrrorrii..iinc e o nc connettttii..iinc conne nc sessiione..iinc se ss o n e n c ERRORII ERROR DATABASE DATABASE SESSIIONE SESS ONE UTENTE UTENTEgestt_catt..iincges _ca nc gestt_orrd..iinc ges _o d nc gestt_carr..iinc ges _ca ncCATALOGOCATALOGO ORDIINII ORD N CARRELLO CARRELLO gestt_utt..iinc ges _u nc UTENTII UTENT conttrrolllo..iinc co n o o n c CONTROLLO CONTROLLO Figura 9 progettazione e sviluppo di un’applicazione per commercio elettronico 16
  17. 17. tesi di laurea triennale in ingegneria informatica 2. Realizzazione1. Implementazione:la descrizione si articola per aree tematiche.DATABASEPer motivi di ordine economico,la scelta del DB individua come strumento l’ open sourceattualmente più popolare MySql che presenta inoltre il pregio di esserescalabile(caratteristica utile in questo progetto). La seconda scelta che si deve attuareriguarda il motore di memorizzazione.E’ stato scelto InnoDB. E’ più lento del tipo BDB erichiede più memoria e spazio su disco,tuttavia supporta i savepoint e le transazioni di tipoXA. Anche rispetto a MyIsam le capacità di memoria richieste sono superiori,ma se nepreferiscono il vantaggio del maggior svincolo dalle dimensioni del sistema in caso direcupero dati a seguito di crash e la maggior rapidità di modifica dati grazie alla gestioneautonoma del caching. Quindi si creano il database Negozio e le autorizzazioni perl’amministratore e l’utente. Nella Tab.10 è riportato il codice in SQL del DB :CREATE DATABASE negozio DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;GRANT CREATE, DROP, SELECT, UPDATE, INSERT, DELETE ON negozio.* TO dischi_admin@localhost IDENTIFIED BY dischi_admin;GRANT SELECT, UPDATE, INSERT, DELETE ON negozio.* TO dischi_utente@localhost IDENTIFIED BY dischi_utente;USE negozio;SET NAMES utf8; Figura 10Per gli ordini vengono predisposte tre tabelle:Elord,Ordine e Statusor che esprimonorispettivamente gli elementi costitutivi l’ordine,l’ordine vero e proprio e lo statodell’ordine.Nel primo il collegamento con chiavi esterne è verso l’ordine e l’articolo(inquesto caso l’album);nel secondo il collegamento relaziona l’ordine al suo stato e all’utentecui appartiene.Nella Tab.11 è visualizzato il codice: progettazione e sviluppo di un’applicazione per commercio elettronico 17
  18. 18. tesi di laurea triennale in ingegneria informaticaCREATE TABLE Elord(id_elord INTEGER AUTO_INCREMENT PRIMARY KEY,id_ord INTEGER NOT NULL,id_alb INTEGER NOT NULL,prezzo DECIMAL(6,2) NOT NULL,pezzi INTEGER(4) NOT NULL,FOREIGN KEY (id_ord) REFERENCES Ordine (id_ordine),FOREIGN KEY (id_alb) REFERENCES Album (id_album))ENGINE = InnoDB;CREATE TABLE Ordine( id_ordine INTEGER AUTO_INCREMENT PRIMARY KEY, id_ut INTEGER NOT NULL, id_st INTEGER NOT NULL, nome_sped VARCHAR(120) NOT NULL, azienda_sped VARCHAR(140) NOT NULL, indirizzo1_sped VARCHAR(150) NOT NULL, indirizzo2_sped VARCHAR(150) NOT NULL, città VARCHAR(100) NOT NULL, stato VARCHAR(150), cap INTEGER(10) NOT NULL, nazione VARCHAR(100) NOT NULL, telefono INTEGER(20) NOT NULL, costo_ordine DECIMAL(6,2) NOT NULL, costo_sped DECIMAL(6,2) NOT NULL, costo_totale DECIMAL(6,2) NOT NULL, tipo_pagamento VARCHAR(50) NOT NULL, conferma_paga VARCHAR(80) NOT NULL, stato_ordine INTEGER NOT NULL, esecutore_ord VARCHAR(80) NOT NULL, FOREIGN KEY (id_ut) REFERENCES Utenti (id_utente), FOREIGN KEY (id_st) REFERENCES Statusor (id_status))ENGINE = InnoDB;CREATE TABLE Statusor( id_status INTEGER AUTO_INCREMENT PRIMARY KEY, stato VARCHAR(50) NOT NULL) Figura 11ENGINE = InnoDB;L’ultima componente dell’infrastruttura è la tabella Utenti che detiene le informazionipersonali e di login,specificatamente con i campi email e password.Viene inoltre creato unindice per il campo email;quando l’utente cercherà di eseguire il login il sistema effettueràuna ricerca dati su questo. Il codice di questa è scritto nella tabella 12.CREATE TABLE Utenti progettazione e sviluppo di un’applicazione per commercio elettronico 18
  19. 19. tesi di laurea triennale in ingegneria informatica( id_utente INTEGER AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(120) NOT NULL, azienda VARCHAR(140) NOT NULL, indirizzo1 VARCHAR(150) NOT NULL, indirizzo2 VARCHAR(150) NOT NULL, città VARCHAR(100) NOT NULL, stato VARCHAR(150), cap INTEGER(10) NOT NULL, nazione VARCHAR(100) NOT NULL, telefono INTEGER(20) NOT NULL, email VARCHAR(100) NOT NULL, password VARCHAR(100) NOT NULL, INDEX(email))ENGINE = InnoDB; Figura 12Terminata la parte infrastrutturale, rimangono le tabelle dell’esempio:Album che collegatramite chiavi esterne le altre tabelle Artista,Genere e Etichetta.IL codice viene mostratonella figura 13:CREATE TABLE Album( id_album INTEGER AUTO_INCREMENT PRIMARY KEY, id_artista INTEGER NOT NULL, id_etichetta INTEGER NOT NULL, id_genere INTEGER NOT NULL, titolo VARCHAR(100) NOT NULL, immagine VARCHAR(50), descrizione TEXT, prezzo DECIMAL(6,2) NOT NULL, FOREIGN KEY (id_artista) REFERENCES Artista (id_art), FOREIGN KEY (id_etichetta) REFERENCES Etichetta (id_eti), FOREIGN KEY (id_genere) REFERENCES Genere (id_gen))ENGINE = InnoDB;CREATE TABLE Artista( id_art INTEGER AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(100) NOT NULL)ENGINE = InnoDB;CREATE TABLE Etichetta( id_eti INTEGER AUTO_INCREMENT PRIMARY KEY, progettazione e sviluppo di un’applicazione per commercio elettronico 19
  20. 20. tesi di laurea triennale in ingegneria informatica nome VARCHAR(100) NOT NULL)ENGINE = InnoDB;CREATE TABLE Genere( id_gen INTEGER AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(100) NOT NULL)ENGINE = InnoDB; Figura 13A chiusura di ogni tabella c’è la dichiarazione del motore di memorizzazione,così come afine file c’è il comando di caricamento dei dati nelle varie tabelle(fig.14).LOAD DATA LOCAL INFILE negozio.data.statusor.mysql INTO TABLE Status_or FIELDS ENCLOSED BY LINES TERMINATED BY rn (stato);LOAD DATA LOCAL INFILE negozio.data.album.mysql INTO TABLE Album FIELDS OPTIONALLY ENCLOSED BY LINES TERMINATED BY rn (titolo, immagine, descrizione, prezzo);LOAD DATA LOCAL INFILE negozio.data.artista.mysql INTO TABLE Artista FIELDS ENCLOSED BY LINES TERMINATED BY rn (id_art,nome);LOAD DATA LOCAL INFILE negozio.data.etichetta.mysql INTO TABLE Etichetta FIELDS ENCLOSED BY LINES TERMINATED BY rn (id_eti,nome);LOAD DATA LOCAL INFILE negozio.data.genere.mysql INTO TABLE Genere FIELDS ENCLOSED BY LINES TERMINATED BY rn (id_gen,nome); Figura 14PIANO PER L’INTERFACCIACome base per il layout viene utilizzato un foglio di stile foglio.css il cui codice è mostratonella figura 15. progettazione e sviluppo di un’applicazione per commercio elettronico 20
  21. 21. tesi di laurea triennale in ingegneria informatica/** * File foglio.css * * Questo file contiene il foglio base per lapplicativo negozio. * La sua realizzazione è semplice e basilare perché * la sua utilizzazione in questo ambito non deve essere * commerciale e accattivante. *//* * Il sottofondo è di colore bianco */body { background-color: white }/** * Questo font è usato per i testi dei pulsanti e i piccoli link. */.smallPrint { font-family: Arial, Helvetica, sans-serif; font-size: 10px; color: #000088 }.smallLink { font-family: Arial, Helvetica, sans-serif; font-size: 10px; color: #000088 }/** * Il font per la barra del menu in alto e lo stile dei link. */.topMenuBar { background-color: #97c53d }.topMenuBarFont { font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #000088 }.topMenuLink { font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #000088; text-decoration: none }/** * Il font per il titolo pagina */.bigTitle { font-family: Arial, Hevletica, sans-serif; font-size: 32px; font-weight: 800; color: white;text-decoration: none }/** * Il font per il testo della pagina */.pageBody { font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #000079 }.normalTable {font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #000079 }.tableLabel {font-family: Arial, Helvetica, sans-serif; font-size: 24px; color: #000079 }.tableLabelSmall {font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #000079 }.tableLabelTiny {font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #000079 }.errSmall {font-family: Arial, Helvetica, sans-serif; font-size: 12; color: #dd0000 }/** * Qui si sovrascrivono i fogli base forniti dal browser */ progettazione e sviluppo di un’applicazione per commercio elettronico 21
  22. 22. tesi di laurea triennale in ingegneria informaticah1 {font-family: Arial, Helvetica, sans-serif; color: #000089 }h2 {font-family: Arial, Helvetica, sans-serif; color: #000089 } Figura 15 L’interfaccia utente opera con l’inclusione dei file contenenti il markup XHTML dellepagine. Sono state predisposte al riguardo due pagine che verranno caricate nelle paginedi visualizzazione: Pagetesta.inc; Pagefondo.inc.Il nome indica la loro collocazione nel layout. I link relativi inviano rispettivamente allavisualizzazione del carrello(mostracar.php),la pagina di aiuto(aiuto.php) e la navigazionetra gli articoli(mostrapro.php) per il primo file;per il secondo c’ è il rinvio a due moduliprivacy.php per il trattamento dei dati e chisiamo.php che indirizza a una paginainformativa sull’ azienda(moduli non realizzati in questo applicativo). La strategia è,duranteil processo di pagamento, evitare la visita ad altri siti o,peggio,di interromperne una dellefasi. Pertanto è opportuno visualizzare solo il menu superiore o la barra di navigazionedelle pagine non coinvolte in tale processo. La barra è controllabile con la variabilebooleana $g_nonMosBarNav. Infine c’è una chiamata al modulo homepage.php. Lapagetesta è la seguente(fig.16):<!DOCTYPE html PUBLIC "~//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"><head> <title><?php echo $page_title; ?></title> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <link rel="stylesheet" href="foglio.css" type="text/css"/></head><body class=pageBody><table width=100% border=0 cellspacing=0 cellpadding=0><tr> <td align=right><?phpif (!isset($g_nonMosBarNav)){?> <font class=topMenuBarFont> <a class=topMenuLink href=mostracar.php>Vedi carrello</a> | <a class=topMenuLink href=aiuto.php>Aiuto</a> | <a class=topMenuLink href=mostrapro.php>Naviga tra i prodotti</a> </font><?php}else{?> &nbsp;<?php progettazione e sviluppo di un’applicazione per commercio elettronico 22
  23. 23. tesi di laurea triennale in ingegneria informatica}?> </td></tr></table><table width=100% border=0 cellspacing=0 cellpadding=0 class=topMenuBar><tr> <td><hr size=1/></tr><tr> </td> <td> &nbsp; <a class=bigTitle href=homepage.php> Casa del vinile </a> </td></tr><tr> <td><hr size=1/></tr></table> Figura 16Mentre il codice della pagefondo è visualizzato in fig.17:<p align=center> <font class=smallPrint> Copyright &copy; 2012 Negozio spa. Tutti i diritti riservati.<br/> <a class=smallLink href=privacy.php>Trattamento dei dati</a> | <a class=smallLink href=chisiamo.php>Chi siamo</a> </font></p></body> Figura 17</html>NAVIGARE TRA I PRODOTTIGli articoli disponibili dono gestiti dalla classe gestcat(gestione catalogo) che è collegatacon la tabella Album del database. Essa costruisce una lista di tutti i prodotti o dideterminati prodotti ricercati che vengono successivamente caricati e visualizzati sucomando dello script mostrapro(mostra prodotti).Ogni articolo raffigurato è un consideratocome un elemento HTML form.In particolare la parte di codice in figura 18(segue) hal’effetto di rimandare al modulo aggiungi.php l’eventuale ordine dell’articolo visualizzato. progettazione e sviluppo di un’applicazione per commercio elettronico 23
  24. 24. tesi di laurea triennale in ingegneria informatica echo <<<EOHTML <td align=center width=50%> <font class=pageBody> <img src=immagini/$img border=3/><br/> $msg <br/> Album artista: <b>$artista</b><br/> <b>£$prezzo</b> Album etichetta: <b>$etichetta</b><br/> <b>£$prezzo</b> Album genere: <b>$genere</b><br/> <b>£$prezzo</b> <form action=aggiungi.php method=post> <input type=hidden name=albumid value=$aid/> <input type=submit value=Ordina/> </form> </font> </td>EOHTML; Figura 18Nel form viene incluso un secondo input di tipo hidden impostato sull’identificativodell’album. In tal modo il valore del vero identificativo dell’album visualizzato farà confluiretutti i pulsanti nel modulo aggiungi.php. Quest’ultimo cercherà quindi,con la direttiva issetin $_post il valore dell’ identificativo album da aggiungere al carrello. Di seguito(fig. 19)viene fornito il codice del file aggiungi.php: <?php /** *---------------- * aggiungi.php *---------------- * * Questa pagina prende un articolo id e aggiunge lappropriato * articolo nel carrello della spesa utente,memorizzato nei dati di sessione. * Bisogna inoltre verificare che l id articolo sia valido. * */ /* * Si ottiene larticolo che deve essere aggiunto */ if (isset($_POST[albumid])) { /* * Si forza nel formato int */ $aid = intval($_POST[albumid]); } progettazione e sviluppo di un’applicazione per commercio elettronico 24
  25. 25. tesi di laurea triennale in ingegneria informatica /* * Poi,la gestcar aggiunge una voce per questo aid * nel carrello della spesa. Se la voce è già presente * nel carrello incrementa il numero di elementi se esistenti. * * */ $gc = GestCar::ottieniIstanza(); $gc->AggiungiArticoloCarrelloUtente($aid); /* * Redirezione alla pagina che mostra il contenuto del carrello */ header(Location: mostracar.php); ?> Figura 19Il file si avvale di un’istanza dell’oggetto GestCar definita nelle librerie e della proceduraAggiungiArticoloCarrelloUtente che controlla la validità sessione e che l’articolo esista nelcatalogo con l’ausilio di un’ oggetto di libreria GestCat mediante la proceduraearticolovalido. Poi discrimina se l’articolo è già presente nel carrello;se sì ne incrementa ilnumero(npe),viceversa crea il nuovo elemento,ne ottiene le caratteristiche e lo memorizzanel carrello.Il richiamo alla procedura è visibile nella figura 20: /* *---------------------------------------- * AggiungiArticoloCarrelloUtente *---------------------------------------- * Questa procedura aggiunge un album agli elementi * identificati nel carrello associato alla sessione corrente. * Se cè già,ne viene aggiornata la quantità * * * Parametri * $in_aid - id dellarticolo da aggiungere */ public function AggiungiArticoloCarrelloUtente($in_aid) { /* * si controlla la validità della sessione */ $sid = session_id(); /* * Ci si accerta che larticolo sia valido * Lo eseguirà il gestcat(gestione catalogo) */ $gc = GestCat::ottieniIstanza(); $valido = $gc->earticolovalido($in_aid); progettazione e sviluppo di un’applicazione per commercio elettronico 25
  26. 26. tesi di laurea triennale in ingegneria informatica /* * Si controlla se ci sono già dati nella sessione * per questo aid */ if (isset($_SESSION[carrello]) and isset($_SESSION[carrello]["$in_aid"])) { $elemcarrello = &$_SESSION[carrello]["$in_aid"]; $elemcarrello[npe]++; } else { /* * ottieni il prezzo e titolo dellarticolo da gestcat * da inserire nel carrello */ $album = $gc->ottieniInfoArticolo($in_aid); $elemcarrello = new elemcarrello($in_aid, $album->ottieniTitolo(), $album->ottieniPrezzoPerUnita(), 1); /* * memorizza questa nuova voce nei dati di sessione, * creando larray del carrello se necessario */ if (!isset($_SESSION[carrello])) $_SESSION[carrello] = array(); $_SESSION[carrello]["$in_aid"] = $elemcarrello; } Figura 20 }Come si può vedere,l’oggetto gc della classe GestCat sfrutta due procedure di libreria: earticolovalido(fig.21); ottieniInfoArticolo(fig.22). /* *------------------- * earticolovalido *------------------ * questa procedura prende un id album e ne controlla * la validità. * * Parametri: * $in_albumid - articolo da controllare * * Output: * Booleano - TRUE se è valido,FALSE altrimenti. * * progettazione e sviluppo di un’applicazione per commercio elettronico 26
  27. 27. tesi di laurea triennale in ingegneria informatica * * */ public function earticolovalido($in_albumid) { /* * se è una stringa va trasformata in intero */ $in_albumid = intval($in_albumid); /* * connessione al database */ $conn = Connesdb::ottieniConnessione(); /* * query per trovare lid album */ $query = <<<EOQSELECT id_album FROM Album WHERE id_album = $in_albumidEOQ; /* * query */ $results = @$conn->query($query); /* * azzera e indica se cè 1 solo riscontro */ $output = ($results->num_rows == 1) ? TRUE : FALSE; $results->close(); return $output; Figura 21 }/* *----------------------- * ottieniInfoArticolo *----------------------- * restituisce le informazioni del dato album id * * Parametri: * $in_albumid - informazioni richieste sullarticolo * * Output: * istanza della classe album con relative informazioni * * * progettazione e sviluppo di un’applicazione per commercio elettronico 27
  28. 28. tesi di laurea triennale in ingegneria informatica * */ public function ottieniInfoAlbum($in_albumid) { /* * trasforma la stringa in intero */ $in_albumid = intval($in_albumid); /* * connessione */ $conn = Connesdb::ottieniConnessione(); /* * query dellelemento */ $query = <<<EOQSELECT id_album,titolo,descrizione,nome, prezzo,immagine FROM Album INNER JOIN Artista WHERE Album.id_artista = Artista.id_art AND id_album = $in_albumidEOQ; /* * esegue la query e fornisce i risultati */ $result = @$conn->query($query); /* * per ciascuna riga in uscita, crea un oggetto di classe * album e lo aggiunge allarray in uscita */ $output = array(); $row = @$result->fetch_assoc(); $alb = new Album( $row[id_album], $row[titolo], $row[descrizione], $row[nome], $row[prezzo], $row[immagine] ); return $alb; Figura 22 progettazione e sviluppo di un’applicazione per commercio elettronico 28
  29. 29. tesi di laurea triennale in ingegneria informatica }ALBUMIn generale gli album in vendita sono fondamentalmente racchiusi nell’omonima tabella deldatabase che ne descrive titolo,immagine,descrizione e prezzo.Il nome dell’album vienememorizzato per la stampa e visualizzato nelle pagine del listino e la tabella è gestita dallaclasse GestCat(gestione catalogo). Oltre ai sottoprogrammi già descritti,la libreriacomprende le procedure per ottenere i principali campi prodotto(fig.23) e le routine pereffettuare le ricerche(fig.24)./* *--------- * Album *--------- * questa classe rappresenta tutti i dettagli di un articolo. * Si utilizzano solo variabili di membri privati e metodi pubblici. * Così si concede laccesso di sola lettura ai membri. */class Album{ /* * queste variabili confrontano i dati della tabella Album * del database.Viene restituito un array di oggetti album * nonostante le chiamate di funzioni non agiscono direttamente * sulle tabelle del database */ private $albumid; private $titolo; private $descrizione; private $artista; private $etichetta; private $genere; private $prezzo; private $immagine; /* *--------------- * __construct *--------------- * Crea una nuova istanza della classe Album * * * Parametri: * $in_albumid - campo identificativo da Album * $in_titolo - campo titolo * $in_descrizione - campo descrizione * $in_artista - campo artista * $in_etichetta - campo etichetta * $in_genere - campo genere progettazione e sviluppo di un’applicazione per commercio elettronico 29
  30. 30. tesi di laurea triennale in ingegneria informatica * $in_prezzo - campo prezzo * $in_immagine - campo immagine */ function __construct ( $in_albumid, $in_titolo, $in_descrizione, $in_artista, $in_etichetta, $in_genere, $in_prezzo, $in_immagine ) { $this->albumid = $in_albumid; $this->titolo = $in_titolo; $this->descrizione = $in_descrizione; $this->artista = $in_artista; $this->etichetta = $in_etichetta; $this->genere = $in_genere; $this->prezzo = $in_prezzo; $this->immagine = $in_immagine; } /* * queste procedure sono usate in modalità accesso sola lettura * sui dati */ public function ottieniAlbumID() { return $this->albumid; } public function ottieniTitolo() { return $this->titolo; } public function ottieniDescrizione() {return $this->descrizione;} public function ottieniArtista() { return $this->artista; } public function ottieniEtichetta() { return $this->etichetta; } public function ottieniGenere() { return $this->genere; } public function ottieniPrezzoPerUnita() { return $this->prezzo; } public function ottieniImmagine() { return $this->immagine; }} Figura 23Nell’esempio sottoriportato è mostrata la ricerca album per artista. Nel file è stato scrittoanche il codice per ricercare gli album per genere ed etichetta,ma qui non verrà riportatoperché concettualmente simile a questa realizzazione./* *---------------------------- * ottieniRiscontroAlbArt *---------------------------- * restituisce una lista degli articoli riscontrati * Tutti indica tutti gli articoli disponibili * progettazione e sviluppo di un’applicazione per commercio elettronico 30

×