Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117

    Identificazione utente non loggato

    Ciao a tutti, ho realizzato un semplice carrello che consente di:

    far loggare un utente un utente se già registrato oppure farlo prima registrare e poi loggare nel caso in cui non è registrato
    scegliere gli articoli salvandoli in una tabella temporanea con l'ID dell'utente
    terminare gli acquisti

    ora però è stato deciso di mettere la registrazione al termine degli acquisti

    quindi dovrei

    far scegliere gli articoli
    salvarli in una tabella temporanea
    far registrare il cliente
    terminare gli acquisti

    problema:

    come identifico l'utente non loggato che sceglie gli articoli??? per salvare le sue scelte nella tabella temporanea??

    ho pensato di mettere una var di sessione ora+data?? è possibile? come???

    e come faccio a fare in modo che ogni volta che il cliente accede alle varie pagine non venga riinizializzata questa variabile?? intendo: se sei sempre lo stesso cliente che sta navigando tra i vari articoli... come faccio a non sovrascrivere la vecchia ora???

    Grazie per l'aiuto

  2. #2
    forse non ho capito ma... non puoi tenere in memoria il contenuto del carrello senza metterlo nel db? Lo metti nel db solo in caso di conferma di ordine (e quindi utente registrato).
    Saluti a tutti
    Riccardo

  3. #3
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Potrebbe essere un'idea... senza usare la tabella temporanea.

    Ma come lo tengo in memoria??? cosa uso? la cache?? (potresti farmi un esempio)??

    dovrei salvare solo:

    codice articolo, qt e prezzo ... in questo caso non l'identificativo dell'utente dato che i dati saranno salvati nel PC di ogni utente... giusto??????

    Grazie per l'aiuto

  4. #4
    come lo tengo in memoria??? cosa uso? la cache??
    la cache, e' un oggetto introdotto con asp.net e che si comporta in maniera simile all'oggetto application. Cioe' e' unica per ogni utente che si collega al sito. Siccome che qui si parla di dati specifici di ogni utente (loggato o non loggato non conta) che si collega al sito l'oggetto da utilizzare per mantenere in memoria i dati e' la session.
    (potresti farmi un esempio)??
    session("carrello") = oggettochecontieneidatiesdatatableoclassecustom
    dato che i dati saranno salvati nel PC di ogni utente... giusto??????
    No che non e' giusto. Sul computer del client non puoi salvare niente se non qualcosa dentro un cookie ma non e' questo il caso. Quello che metti nell'oggetto session rimane fisicamente sul webserver e viene automaticamente cancellato quando l'utente chiude il browser.
    Saluti a tutti
    Riccardo

  5. #5
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Scusa ho scritto cache intendendo cookies.

    Quindi non posso usare i cookies per salvare questa info... secondo il tuo suggerimento dovrei salvare il datatable con il carrello in una variabile di sessione... è corretto??

    Grazie

  6. #6
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Scusa ma mi sfugge una cosa... ipotizzando di usare una var di sessioen nella quale salvo il datatable del dataset

    Session["TbCarrello"]

    se priva facevo:

    OleDbCommand myCommand = new OleDbCommand("SP_Carrello_Insert", myConnection);
    myCommand.CommandType=CommandType.StoredProcedure;

    myCommand.Parameters.Add(new OleDbParameter("@CodiceArticolo", code));
    myCommand.Parameters.Add(new OleDbParameter("@CodiceCliente", Session["IDAzienda"].ToString()));
    myCommand.Parameters.Add(new OleDbParameter("@Qt", quantity));
    myCommand.Parameters.Add(new OleDbParameter("@Totale", totale));

    try
    {
    myConnection.Open();
    myCommand.ExecuteNonQuery();

    ....

    ora invece come salvo gli elementi scelti nella var di sessione???

    Grazie

  7. #7
    Riguardo al modo di aggiungere al command i vari parametri, forse sarebbe piu' corretta, breve e a prova di errori una sintassi cosi
    codice:
    myCommand.Parameters.Add("?", OleDb.OleDbType.VarChar).Value = tuastringa
    myCommand.Parameters.Add("?", OleDb.OleDbType.Integer).Value = tuointeger
    ecc.ecc.
    Scusa ma mi sfugge una cosa...
    anche a me sfugge qualcosa del tuo metodo. Ad es. un ordine e' costituito da tanti dettagliordine. Nel tuo codice manca ad es. un riferimento ad un idordine. Cosi facendo 1 ordine = 1 prodotto?
    ora invece come salvo gli elementi scelti nella var di sessione???
    non capisco cosa non hai capito. Mi viene da risponderti nel modo che ti ho indicato nel post precedente. es.
    hai una datatable Ordine in memoria con una riga per ogni prodotto ordinato e tante colonne quante te ne servono (es. quantita, prezzo ecc.). Salvi in memoria con
    codice:
    Session("Carrello") = Ordine
    e recuperi con
    codice:
    dim Ordine as datatable
    if not session("Carrello") is nothing then 
    Ordine = ctype(session("Carrello"), datatable)
    end if
    Saluti a tutti
    Riccardo

  8. #8
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Io non sto salvando un ordine ma il contenuto del carrello... quando un utente confermerà gli articoli, aprirò il modulo di registrazione e dovrò assegnare il contenuto del carrello all'ID dell'utente e all'ID dell'ordine (dopo che si è registrato)... in questo momento sono nella fase di inserimento articoli nel carrello (invece che in una tabella temporanea del DB)

    Quello che invece non capisco è come salvare i vari elementi del carrello (articolo, qt e px) in una datatable, dato che io solitamente il salvo direttamente nel DB, senza passare da un DataTable

    come indicato nel mio esempio

    OleDbCommand myCommand = new OleDbCommand("SP_Carrello_Insert", myConnection);
    myCommand.CommandType=CommandType.StoredProcedure;

    myCommand.Parameters.Add(new OleDbParameter("@CodiceArticolo", code));
    myCommand.Parameters.Add(new OleDbParameter("@CodiceCliente", Session["IDAzienda"].ToString()));
    myCommand.Parameters.Add(new OleDbParameter("@Qt", quantity));
    myCommand.Parameters.Add(new OleDbParameter("@Totale", totale));

    try
    {
    myConnection.Open();

  9. #9
    Originariamente inviato da valeria75
    Quello che invece non capisco è come salvare i vari elementi del carrello (articolo, qt e px) in una datatable, dato che io solitamente il salvo direttamente nel DB, senza passare da un DataTable
    come indicato nel mio esempio
    non ripostarmi il codice dei parametri (che tra l'altro come ti ho consigliato faresti meglio a cambiare).
    Prova semmai a immaginare e postare un tentativo di come salvare in memoria i dati usando una datatable (ricreandone quindi una simile o identica alla tabella presente nel db).
    codice:
    dim dt as new datatable
    dt.columns.add("nomecolonna")
    ecc.
    Saluti a tutti
    Riccardo

  10. #10
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Ho ripostato il codice perchè sembrava che non avessi capito il mio problema. Per quanto riguarda i parametri quindi sarebbe piu corretto

    invece
    myCommand.Parameters.Add(new OleDbParameter("@Qt", quantity));

    usare
    myCommand.Parameters.Add("?Qt", OleDb.OleDbType.VarChar).Value = quantity

    per quanto riguarda il datatable non è un problema costruire le colonne del mio datatable, quello che non so è come associare il command alla tabella creata manualmente.
    Tra l'altro myCommand... fa parte di un ciclo

    foreach(RepeaterItem ri in this.repCategorie.Items)
    {
    ...

    che quindi eseguo X volte in base agli elementi selezionati

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.