Realizzare un "carrello"

lunedì 08 giugno 2009 - 16.38

dyd666 Profilo | Junior Member

Salve a tutti
Sempre per quel famoso progetto , vi rirompo le scatole per l'ennesima volta
Avrei la necessità di realizzare un carrello per un sito E-Commerce.
I dati che caratterizzeranno il carrello sono memorizzati in un database Access.
La domanda che vi pongo è questa: come potrei fare?
Mi hanno suggerito di utilizzare un oggetto DataSet , pensate sia la scelta giusta?
Grazie mille per le eventuali risposte

chiccomox Profilo | Junior Member

In VB questa potrebbe essere l'interfaccia del tuo carrello:

Public Class Carrello Private itemsCollection As New Collection Public Sub AddItem(ByVal item) itemsCollection.Add(item) End Sub Public Sub RemoveItem(ByVal item) itemsCollection.Remove(item) End Sub Public Function CheckOut() As Double 'ritorna il totale End Function End Class

Poi puoi aggiungere i metodi che salvano su DB il carrello (magari serializzato in xml o in formato binario). Questo è solo uno spunto poi prova tu ad ampliarlo.


Ciao
http://www.dotnetpertutti.com
http://www.windowspertutti.com

dyd666 Profilo | Junior Member

Grazie innanzitutto per la risposta.
Ma la Collection è una classe?
Come funziona?
Scusami se la meno di nuovo con il DataSet , ma in molti mi hanno suggerito di creare il carrello con quest'oggetto , cosa ne pensi?
Avrei intenzione di realizzare il progetto in C#.

Ciao e grazie ancora

chiccomox Profilo | Junior Member

Ciao,

il DataSet è un oggetto della libreria ADO.Net che serve per da contenitore di tabelle (DataTable) e relazioni. E' sicuramente utile il suo utilizzo ma è uno strumento per interfacciarsi con una base dati, per fare un carrello potrebbe andare bene ma potrebbe essere sufficiente un serie di query che aggiornano il DB, senza la complessità di un DataSet.
Comincia col fare l'analisi del tuo carrello: cosa deve fare, come è strutturata la base dati ecc...

ciao,

Chiccomox
http://www.dotnetpertutti.com
http://www.windowspertutti.com

dyd666 Profilo | Junior Member

Avevo pensato di realizzarlo in questo modo:
L'utente può "comprare" due oggetti (Cd o Dvd) , quindi aggiungere e togliere a piacimento questi oggetti dal suo carrello.
Avrò quindi due tabelle nel mio database posto sul server : Cd e Dvd (oltre a Utenti ecc..)
Prima domanda: nell'oggetto Dataset io posso istanziare una tabella , vero?
Perchè se posso , istanzierei una tabella contenente l'Id del prodotto , la tipologia , il nome , la quantità.
Al momento dell'acquisto il database principale verrà aggiornato in base ai valori inseriti nella tabella del Dataset (Es: se l'utente ha comprato 5 cd , il campo "Quantità" del record corrispondete nella tabella Cd verrà aggiornato di conseguenza).

Spero di essere stato chiaro
Saluti e grazi

chiccomox Profilo | Junior Member

>Avevo pensato di realizzarlo in questo modo:
>L'utente può "comprare" due oggetti (Cd o Dvd) , quindi aggiungere
>e togliere a piacimento questi oggetti dal suo carrello.
>Avrò quindi due tabelle nel mio database posto sul server : Cd
>e Dvd (oltre a Utenti ecc..)
>Prima domanda: nell'oggetto Dataset io posso istanziare una tabella
>, vero?
>Perchè se posso , istanzierei una tabella contenente l'Id del
>prodotto , la tipologia , il nome , la quantità.
>Al momento dell'acquisto il database principale verrà aggiornato
>in base ai valori inseriti nella tabella del Dataset (Es: se
>l'utente ha comprato 5 cd , il campo "Quantità" del record corrispondete
>nella tabella Cd verrà aggiornato di conseguenza).
>
>Spero di essere stato chiaro
>Saluti e grazi

Ciao,

mi sa che hai le idee un po' confuse al riguardo. Per prima cosa non preoccuparti dei singoli oggetti che finiranno nel carrello (cd, dvd, computer, monitor... ecc), devi lavorare ad un livello più astratto: non è necessario creare due tabelle (cd e dvd), anzi è un errore di analisi, puoi creare semplicemente una tabella così strutturata:

id_item id_utente quantita prezzo_unitario
--------- ------------- ---------- -------------------

ogni volta che l'utente mette un oggetto nel carrello fai una INSERT nella tabella, se lo rimuove fai una DELETE:

la colonna id_item sarà in relazione di chiave esterna con una tabella Prodotti:

id_item codice_prodotto descrizione_prodotto
---------- ------------------ ------------------------

Comincia a studiare questa soluzione....

Ciao,

Chiccomox
http://www.dotnetpertutti.com
http://www.windowspertutti.com



dyd666 Profilo | Junior Member

Grazie innanzitutto

>non è necessario creare due tabelle (cd e dvd),
>anzi è un errore di analisi, puoi creare semplicemente una tabella
>così strutturata:
>
>id_item id_utente quantita prezzo_unitario
>--------- ------------- ---------- -------------------
>

Fammi capire quindi: il mio database principale dovrà avere Cd e Dvd all'interno della stessa tabella , distinguibili questi solo dall'ID?
Perchè avevo pensato che un Cd e Dvd potessero avere lo stesso titolo (es. uscita nuovo album e poco dopo annesso Dvd) e quindi non potessero convivere nella stessa tabella , a meno che non mettessi un campo che mi identificasse il tipo (chessò , "Tipo" = Cd / Dvd).
EDIT: Mi ritroverai quindi dopo a dover utilizzare due campi come chiave (Tipo e Id).
Questa tabella di cui parli poi tu (quella del carrello tanto per intenderci) sarà quella presente si nel mio database , ma gestita in modo dinamico?
Tramite il mio Dataset?
(mi ci sto fissando troppo mi sa sul Dataset...)
Sbaglio qualcosa?

Ciao

chiccomox Profilo | Junior Member

>Fammi capire quindi: il mio database principale dovrà avere Cd
>e Dvd all'interno della stessa tabella , distinguibili questi
>solo dall'ID?

esatto. Cd e Dvd non sono altro che tipi di prodotti identificati da un id_item univoco; sarà poi la tabella Prodotti che ti darà tutte le informazioni sul singolo prodotto (per esempio mettendola in join con l'altra tabella). Es:

id_item codice_prodotto descrizione_prodotto prezzo
--------- ------------------ ------------------------ -------
10 A12325 Cd - Pink FLoyd Dark Side..ecc 20.00

ecc...


Ciao

Chiccomox
http://www.dotnetpertutti.com
http://www.windowspertutti.com

dyd666 Profilo | Junior Member

Capito.
Quindi Id-Item potrà assumere due valori , da me stabiliti , ed in base a quelli discernere un cd o un dvd.
Come lo faccio il join però?
Cioè , non mi ritroverei ad avere , nella tabella Prodotti , un valore di chiave composto da due campi?

EDIT: Aspetta che forse ci sono...
Quindi nel mio database metterò , oltre alle tabelle Prodotti , Utenti ecc..ecc... , anche una tabella (Acquisti chiamiamola) con le caratteristiche descritte sopra (id_item , id_utente , quantità ecc...).
Questa tabella sarà la "protagonista" del mio carrello e verrà aggiornata con delle semplici query , senza quindi usufruire del DataSet.
Query inerenti a eliminazioni e inserimenti oggetti nel carrello ecc... giusto?

Il dubbio della chiave primaria di Prodotti rimane però.....

Grazie , ciao

chiccomox Profilo | Junior Member

esempio di join tra la tabella del carrello e la tabella prodotto:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Prova a guardarti alcuni esempi di database con semplici tabelle come Prodotti, Ordini, ecc... ci sono in giro tanti esempi.

Ciao,

Chiccomox
http://www.dotnetpertutti.com
http://www.windowspertutti.com
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5