Turvenn.no
Webutvikler kurs ASP.NET, C#, CSS mm.

WebRessurs.no - Webprogrammering og ressurs innen ASP, ASP.NET, PHP, SQL, HTML, CSS, Javascript, XML, C#, VB, Flash  mm.

Brukernavn: 
Passord:

Registrèr deg Glemt passord?
Logg deg inn




  ASP.net (199)
  ASP 3.0 (111)
  PHP (30)
  HTML (66)
  SQL (89)
  CSS (46)
  XML (7)
  JavaScript (78)
  Diverse kode (13)


  Programmering (22)
  System og drift (15)
  Trafikk og inntekt (11)
  Guider og tips (22)
  Nyttig lesestoff (23)
  Web forum (604)
  Link galleri (565)


  ASP.NET kurs(5)
  CSS kurs (2)
  JQuery kurs (2)


  Øk trafikken (8)
  Facebook App. (4)
  Microsoft CEO (6)


  Server & web
  Internett & epost
  Systemverktøy
  Sikkerhet
  Fildeling
  Lyd & media
  Diverse software


  Domenesalg
  Metagenerator
  Websikre farger
  WebMail


  Bli medlem!
  Siste innlegg
  Gjestebok
  Tips en venn
  Kontakt oss
  Forsiden




Kode Artikler
Linker


Mål internetthastigheten din.


Slik fungerer en nettbutikk


Av: Øyvind A. Isaksen

Denne artikkelen dreier seg hovedsakelig om hvordan handleprosessen i en nettbutikk fungerer. Beskriver databasens oppbygning, og ser på hvordan koden fungerer når en ordre effektueres.



Utgangspunktet for løsningen er at det skal være mulig for en kunde å legge varer i en handlekurv, og å gå til kassen og betale. Jeg ønsker å lagre handlekurven i databasen.

Først av alt er det viktig å bygge opp en fornuftig database for å kunne gjennomføre en handleprosess så enkelt og dynamisk som mulig.


Illustrasjonsbilde



Dobbeltlagring
I 2 tilfeller har jeg valgt å lagre data dobbelt, dette for at løsningen skal bli så dynamisk som mulig. Jeg har valgt å lagre pris i tabellene tblVarer, tblHandlekurv og tblOrdrePoster. Grunnen til at prisen bør lagres i tblHandlekurv er at kunden skal få den prisen varen har når han velger å kjøpe den. Oppdateres prisen på en vare etter at en kunde har lagt den i handlekurven, skal ikke prisen på varen endres for denne kunden. Grunnen til at prisen lagres i tblOrdreposter er at en endring av prisen på en vare ikke skal endre historikken, og dermed regnskapet, for tidligere salg. Prisen ved et salg blir dermed lagret, og vil ikke endres ved prisjusteringer senere.
Har også valgt å lagre informasjonen om kunden i tblOrdre. Grunnen til dette er at kunde da har mulighet til å velge en annen leveringsadresse en der han/hun bor, eller levere varen som en gave.

SessionID
Når en kunde handler i butikken, vil handlekurven (tblHandlekurv) fylles opp med kundens varer. Grunnen til at jeg lagrer kundens SessionID i handlekurven er at da kan vi koble denne handlekurven til riktig bruker, uten at brukeren er logget inn!

Gå til kassen
Når en bruker logger inn og velger å gå til kassen, opprettes det en ny ordre i tblOrdre der opplysninger om leveringsadresse blir lagert.
Deretter tar vi dataene fra tblHandlekurv og legger disse inn i tblOrdreposter sammen med kundens KundeID. På denne måten er er tblOrdrePoster som inneholder alle effektuerte ordre, mens tblHandlekurv bare er et midlertidig sted for lagring av kundens varer under handleprosessen.

Tømme handlekurv i databasen
Handlekurven vil fylles opp med veldig mye data etterhvert. Husk at alle som kun legger en vare i handlekurven men ikke går til kassen, vil likevel legge inn poster i tblHandlekurv. Derfor vil det være greit å tømme handlekurven ved jevne mellomrom, dette kan f.eks løses med en liten kommando i Global.ASA filen som sletter alle poster i handlekurven ved f.eks re-staring av serveren.

Overføre data til Ordrepost-tabellen
Den største utfordingen rent kodemessig vil nok i denne løsningen være å overføre informasjonen fra tblOrdre, sammen med alle aktuelle poster i handlekurven, til tablellen tblOrdreposter.

Først oppretter vi en ordre med leveringsadresse i tblOrdre.
Deretter henter vi ut denne ordreID’en ved å ta ut siste ordreID i tblOrdre, og legge denne  i variabelen dbOrdreID.


Koden for å overføre dataene:

SQL = "Select ordreID from tblOrdre where kundeID =" &varKundeID

Set rsHentOrdreID = SERVER.CreateObject("ADODB.RECORDSET")
       rsHentOrdreID.Open SQL, ConnString,2,2
              
              Flytter til kundens siste ordre i databasen.
              rsHentOrdreID.MoveLast
              dbOrdreID = rsHentOrdreID.Fields("ordreID")
       
       rsHentOrdreID.Close
set rsHentOrdreID = nothing


Her hentes hele handlekurven til den aktuelle brukeren (SessionID) ut av tblHandlekurv:

varSessionID = Session.SessionID

SQL = "SELECT VareID, Antall, Pris,
(SELECT Varenavn FROM tblVarer WHERE VareID = tblHandlekurv.VareID) AS Varenavn FROM tblHandlekurv
WHERE SessionID =” &varSessionID

set rsHentkurv = server.CreateObject("ADODB.RECORDSET")
       rsHentkurv.Open SQL, Connstring
       
       dim dbvareID(),dbAntall(),dbPris(),dbVarenavn()
       i = 0       
       do while not rsHentkurv.EOF
              
       Her hentes alle forekomstene i handlekurven og legges sekvensielt inn i arrays
       Må redefinere størrelsen på de 3 arrays hver gang da vi ikke vet hvor mange
       poster handlekurven inneholder og derfor heller ikke størrelsen på arrayene.

              redim preserve dbvareID(i),dbAntall(i),dbPris(i),dbVarenavn(i)
              dbVareID(i) = rsHentkurv.Fields("VareID")
              dbAntall(i) = rsHentkurv.Fields("antall")
              dbPris(i) = rsHentkurv.Fields("pris")
              
              i = i + 1
              
       rsHentkurv.MoveNext
       loop
       
       rsHentkurv.Close
set rsHentkurv = nothing


Lager en løkke der SQL-setningen blir forlenget med tilsvarende antall forekomster som i handlekurven. Hver del av løkken tilsvarer da en post i handlekurven.

for i = 0 to ubound(dbVareID)
       Query = Query & " INSERT INTO tblOrdrePoster (OrdreID,VareID,Antall,Pris) VALUES ("&dbOrdreID&","&dbVareID(i)&","&dbAntall(i)&","&dbPris(i)&")"
next


Til slutt legger vi inn dataene i tblOrdrePoster med variabelen Query (ovenfor) som source/kilde. Dermed blir det generert en ordrepost for hver post i handlekurven.

set cn = server.CreateObject("ADODB.Connection")
       cn.Open ConnString
       cn.Execute Query
       cn.Close
Set cn = nothing


Da er det bare å behandle alle ordre som ligger lagret i tblOrdrePoster, og få dem sendt til kunden så raskt som mulig!

WebRessurs.no anbefaler:    StackOverflow.com | Experts-Exchange.com | W3schools | ASP.NET | Codeproject | 4Guys
WebRessurs.no er utviklet og drives av SoftMaker
Sett som startside: [ ]. Bokmerk denne siden: [ klikk ]. Sitemap. http://twitter.com/webressurs_no/. Antall brukersesjoner: 14120795.
Copyright WebRessurs.no © 2003 - 2018
Jobbsøk.no - Jobbsøknad, CV, intervju, tips og lenker