Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    5

    URGENTE!!! Gestione numero ordine in un Carrello

    Ciao!
    Sto facendo un sito e-commerce in ASP con Dreamweaver che permette all'utente che ha fatto il login di effettuare un ordine.
    Non riesco a capire come e dove generare il numero d'ordine da inserire ne DB.

    Ho una tabella Fare che contiene:
    Username
    num_ordine
    data

    e una tabella Ordine che conterrà una riga per ogni prodotto aggiunto al carrello:
    num_ordine
    data
    id_prodotto
    quantità
    prezzo

    Insomma, quando devo generare la riga nella tabella FARE?

    Help me please!!!

  2. #2
    ma che è la tabella FARE? fare cosa?? mah...

    in genere un utente prima prepara un ordine, ovvero riempie un carrello con tutti i prodotti che vuole comprare... quindi ci sarà una tabella "carrelli" dove salvi il carrello dell'utente.

    il carrello immagino avrà alcuni stati, due su tutti: aperto, chiuso (poi anche ci può essere scaduto ad esempio).

    Una volta che il carrello è su chiuso (ovvero che l'utente ha deciso che non deve piu aggiungere prodotti nel carrello e procede all'acquisto) verrà generato un ordine.

    l'ordine quindi o sarà il carrello stesso ( a questo punto il numero ordine potrebbe essere, ad esempio, l'id auto-incrementante del carello), oppure avrai un'altra tabella ordini, col tuo numero ordine, che sarà agganciata al carrello e ai prodotti ad esso correllati

    quindi, in soldoni, il numero ordine lo creerai quando andrai a "chiudere" il carrello

    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    5
    La tabella Fare è quella che tu chiami tabella Ordine e che contiene un record per ogni ordine effettuato.

    Considera che nel mio sito è prevista, per l'utente loggato e per l'amministartore, la possibilità di modificare o disdire un ordine anche dopo che è stato chiuso, quindi mi devo mantenere per forza tutti gli ordini in una tabella. Non è previsto il pagamento on line, ma il ritiro della merce in negozio.
    Inserire il carrello con gli stati "aperto" e "chiuso" è una bella idea, ma in che momento devo settare lo stato ad "aperto"?


  4. #4
    Ciao,

    in genere il numero d'ordine lo crei quando l'utente da una sorta di "conferma" all'ordine....che può essere fatta ad esempio accedendo alla pagina del pagamento, o in altri momenti che decidi tu. Cmq quando un utente accetta l'ordine, dovresti già scalare dalla giacenza i prodotti che l'utente ha nel carrello....poi se eventualmente annullasse l'ordine o non pagasse (ad esempio entro tot giorni), potresti ripristinare la giacenza...

    Io nel mio faccio così...
    Cmq ne ho appena fatto anche io uno in ASP, e se ti serve una mano per qualcosa, fammi un fischio...ciao

  5. #5
    ma che vuol dire "quando lo setto ad aperto?" ? ragioniamo, quando è che "apri" un carrello? non di certo quando lo chiudi, ovvero vai alla cassa (che poi il pagamento sia on line o al negozio non importa), ma lo aprirai quando ci metterai dentro il primo oggetto... poi appunto devi gestire gli stati dell'ordine, che ad esempio possono essere

    in lavorazione (subito dopo che l'utente ha confermato l'ordine)
    disdetto (disdetto dall'utente)
    rifiutato (disdetto dall'admin)
    chiuso (merce ritirata dall'utente)
    riaperto
    evaso (se è stata spedita merce)
    etc etc
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Concordo con Santino83_02,

    io ad esempio ho 8 diversi stati dell'ordine...da confermare, confermato/da pagare, pagato/da spedire, spedito, ricevuto, archiviato, chiuso , annullato...questi stati vengono cambiati man mano che si procede con l'evoluzione dell'ordine...a parte quelli tipo "annullato" "chiuso"...che vengono settati direttamente.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    5
    Grazie mille a tutti, mi siete grande aiuto per capire il funzionamento del carrello e degli ordini, però adesso ho un problema nell'inserire i record del carrello nella tabella ORDINE associandogli i valori del record identificativo dell'ordine (tabella FARE).
    Le tabelle che ho sono:
    FARE (id_ordine, data, user_id) tutti chiave
    CARRELLO (id_prodotto, quantita, prezzo, modello, descrizione) id_prodotto è chiave
    ORDINE (id_ordine, data, id_prodotto, quantita, prezzo, modello) i primi tre sono chiave


    Mi dice che non può inserire record duplicati e non mi inserisce niente in ORDINE.
    La tabella CARRELLO verrà svuotata dopo che ho inserito i dati in ORDINE.
    Di seguito vi metto il codice dell'intera pagina:



    <%
    user=Session("MM_username")
    d=date()
    response.write(d)
    response.write(user)
    %>
    <%
    Dim MM_editCmd

    Set MM_editCmd = Server.CreateObject ("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_Database3D_STRING
    MM_editCmd.CommandText = "INSERT INTO Fare (user_id, [data]) VALUES (?, ?)"
    MM_editCmd.Prepared = true
    MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param1", 202, 1, 255, user) ' adVarWChar
    MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param2", 135, 1, -1, d) ' adDBTimeStamp
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close
    %>


    <%
    Dim Recordset1__MMColParam
    Recordset1__MMColParam = "1"
    If (Request.QueryString("user_id") <> "") Then
    Recordset1__MMColParam = Request.QueryString("user_id")
    End If
    %>
    <%
    Dim Recordset1
    Dim Recordset1_cmd
    Dim Recordset1_numRows

    Set Recordset1_cmd = Server.CreateObject ("ADODB.Command")
    Recordset1_cmd.ActiveConnection = MM_Database3D_STRING
    Recordset1_cmd.CommandText = "SELECT * FROM Fare WHERE user_id = ?"
    Recordset1_cmd.Prepared = true
    Recordset1_cmd.Parameters.Append Recordset1_cmd.CreateParameter("param1", 200, 1, 255, Recordset1__MMColParam) ' adVarChar

    Set Recordset1 = Recordset1_cmd.Execute
    Recordset1_numRows = 0
    %>
    <%
    Dim Recordset2
    Dim Recordset2_cmd
    Dim Recordset2_numRows

    Set Recordset2_cmd = Server.CreateObject ("ADODB.Command")
    Recordset2_cmd.ActiveConnection = MM_Database3D_STRING
    Recordset2_cmd.CommandText = "SELECT * FROM Carrello"
    Recordset2_cmd.Prepared = true

    Set Recordset2 = Recordset2_cmd.Execute
    Recordset2_numRows = 0
    %>

    <%Dim Repeat2__numRows
    Dim Repeat2__index

    Repeat2__numRows = -1
    Repeat2__index = 0
    Recordset2_numRows = Recordset2_numRows + Repeat2__numRows
    %>

    <%
    While ((Repeat2__numRows <> 0) AND (NOT Recordset2.EOF))
    Dim MM_editCmd2

    Set MM_editCmd2 = Server.CreateObject ("ADODB.Command")
    MM_editCmd2.ActiveConnection = MM_Database3D_STRING
    MM_editCmd2.CommandText = "INSERT INTO Ordine (id_ordine, id_prodotto, [data], quantita, prezzo, modello) VALUES (?, ?, ?, ?, ?, ?)"
    MM_editCmd2.Prepared = true
    MM_editCmd2.Parameters.Append MM_editCmd2.CreateParameter("param1", 5, 1, -1, MM_IIF(Request.Form("id_ordine"), Request.Form("id_ordine"), null)) ' adDouble
    MM_editCmd2.Parameters.Append MM_editCmd2.CreateParameter("param2", 5, 1, -1, MM_IIF(Request.Form("id_prodotto"), Request.Form("id_prodotto"), null)) ' adDouble
    MM_editCmd2.Parameters.Append MM_editCmd2.CreateParameter("param3", 135, 1, -1, MM_IIF(Request.Form("data"), Request.Form("data"), null)) ' adDBTimeStamp
    MM_editCmd2.Parameters.Append MM_editCmd2.CreateParameter("param4", 5, 1, -1, MM_IIF(Request.Form("quantita"), Request.Form("quantita"), null)) ' adDouble
    MM_editCmd2.Parameters.Append MM_editCmd2.CreateParameter("param5", 5, 1, -1, MM_IIF(Request.Form("prezzo"), Request.Form("prezzo"), null)) ' adDouble
    MM_editCmd2.Parameters.Append MM_editCmd2.CreateParameter("param6", 202, 1, 255, Request.Form("modello")) ' adVarWChar
    MM_editCmd2.Execute
    MM_editCmd2.ActiveConnection.Close

    Wend
    %>

    <!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">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    </head>

    <body>
    Ultimo
    </body>
    </html>
    <%
    Recordset1.Close()
    Set Recordset1 = Nothing
    %>
    <%
    Recordset2.Close()
    Set Recordset2 = Nothing
    %>


    Ho provato anche a fare una select per estrarre l'ultimo record inserito in FARE, ma non mi funziona. Il codice è:

    Dim Recordset1__MMColParam
    Recordset1__MMColParam = "1"
    If (Request.QueryString("user_id") <> "") Then
    Recordset1__MMColParam = Request.QueryString("user_id")
    End If
    %>
    <%
    Dim Recordset1
    Dim Recordset1_cmd
    Dim Recordset1_numRows

    Set Recordset1_cmd = Server.CreateObject ("ADODB.Command")
    Recordset1_cmd.ActiveConnection = MM_Database3D_STRING
    Recordset1_cmd.CommandText = "Select max(id_ordine), data FROM Fare WHERE user_id = ?"
    Recordset1_cmd.Prepared = true
    Recordset1_cmd.Parameters.Append Recordset1_cmd.CreateParameter("param1", 200, 1, 255, Recordset1__MMColParam) ' adVarChar

    Set Recordset1 = Recordset1_cmd.Execute
    Recordset1_numRows = 0

    Ma quando inserisco i record in ORDINE non vede i campi id_ordine e data.

    HELP ME PLEASE!!!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.