tblCart (varukorgen)
och
tblOrder (där sparas de ordrar som man vill spara för framtiden)
Kan man då använda sessions som ger användaren ett ordernummer direkt när man loggar in? ordernumert byggs av ett prefix samt ett löpnummer ex prefix:2004 löpnummer: 001 dvs 2004001
Går det att döda sessionen samtidigt som man sparar eller tömmer varukorgen?
Varför spara i en session.array istället för databas?
mvh
Ordern sparas tillslut i en databas, när köpet slutförs. Anledningen till session arrayen är att du inte vet vem kunden är förrän han/hon loggat in. Ska du spara varorna direkt ner i databasen får du kräva inloggning innan kunden kan handla. Eller får du ge varorna ett unikt id preliminärt, tills du vet kundnumret.
Varför spara i en session.array istället för databas?
mvh
Ordern sparas tillslut i en databas, när köpet slutförs. Anledningen till session arrayen är att du inte vet vem kunden är förrän han/hon loggat in. Ska du spara varorna direkt ner i databasen får du kräva inloggning innan kunden kan handla. Eller får du ge varorna ett unikt id preliminärt, tills du vet kundnumret.
Det är väldigt enkelt att hålla reda på vem som har vad i t.ex. en kundkorg om man implementerar användning av Session.SessionId. Detta styrs inte av din kunds eventuella inloggningsstatus och ändras inte heller såvida inte din session förstörs (.Abandon eller .Timeout).
Jag rekommenderar fortfarande alltid att ha kundkorgen på serversidan, alltid. Att hålla på att proppa arrayer fulla med data på klientsidan tycker jag bara är onödigt.
@nders lösning med inloggning innan låter vettig, även om jag själv förmodligen inte skulle använt en sådan shop. Så som tex Adlibris fungerar passar mig perfekt.
Men med OveRRidE:s lösning kan man i princip få en massa "herrelösa" produkter i databasen om inte köpet slutförs. Då får man istället hålla på och rensa bort dessa.
Smaken är som baken, bara att välja och vraka mellan olika lösningar.
Inloggning krävs egentligen för min del bara när olika kunder har olika priser på samma vara. Dvs i alla lösningar jag arbetat med. Annars håller jag med dig.
Men jag avskyr när webbplatser timeoutar mig i onödan. Om jag sitter och skapar en beställning i en shop på webben, och får ett telefonsamtal så vill jag kunna slutföra den beställningen när telefonsamtalet är slut, och inte tvingas börja om från början eftersom min session har slutat gälla.
Jag hade gjort så här:
*) När sessionen startas, använd session.sessionid och lagra i en cookie hos klienten.
*) Lägra kundvagnen i en tabell i databasen med sessionsid från klientens cookie för att hålla reda på vilka varor som ligger i vilken kundvagn.
K@llen skrev:
Men med OveRRidE:s lösning kan man i princip få en massa "herrelösa" produkter i databasen om inte köpet slutförs. Då får man istället hålla på och rensa bort dessa.
Det har jag inga problem med. För mig gör det inget som helst att det ligger lite skräp i en kundvagnstabell. Vill man kan man ju rensa lite med jämna mellanrum, men jag skulle bli glad om min kundvagn var sparad vid mitt nästa besök. :)
:)
Detta är inte ett regelrätt ordersystem även om det finns likheter. Det är mer som ett offertsystem där man ska kunna välja olika artiklar och spara dessa för att sedan få totalsumman i "varukorgen" (Prisjämförelse @nders!! ;) )
Arbetsgången blir därför:
0. Inloggning. Då skapas ett unikt sessionID som lagras i en cookie hos klienten
1. skapa ny order/offert eller vad man ska kalla det (lägga in kunddata)
2. lägga artiklar i varukrogen
3. visa varukorgen/ skriva ut
4. spara/radera
Då blir det väl två tabeller? en tblCart och en tblOrder?
Hur dödar jag sessionen cookien om jag inte vill spara ordern??
Inloggning krävs egentligen för min del bara när olika kunder har olika priser på samma vara. Dvs i alla lösningar jag arbetat med. Annars håller jag med dig.
Ja, precis. Innan jag loggar in vill jag se så alla varor finns, annars blir det att handla på annat ställe. Jag brukar även fylla varukorgen på olika bokshopar för att se vilket som blir billigast. Då vill man inte logga in på samtliga ställen.
@nders skrev:
Men jag avskyr när webbplatser timeoutar mig i onödan. Om jag sitter och skapar en beställning i en shop på webben, och får ett telefonsamtal så vill jag kunna slutföra den beställningen när telefonsamtalet är slut, och inte tvingas börja om från början eftersom min session har slutat gälla.
Det kan jag hålla med om. Därför ändrar jag mig till en cookie istället för att lagra varukorgen i en session.
@nders skrev:
K@llen skrev:
Men med OveRRidE:s lösning kan man i princip få en massa "herrelösa" produkter i databasen om inte köpet slutförs. Då får man istället hålla på och rensa bort dessa.
Det har jag inga problem med. För mig gör det inget som helst att det ligger lite skräp i en kundvagnstabell. Vill man kan man ju rensa lite med jämna mellanrum, men jag skulle bli glad om min kundvagn var sparad vid mitt nästa besök. :)
Då får du även lagra datum och tid för varje produkt för att kunna rensa tillfredställande. Eller byter du sedan ut ditt sessionId mot ett kundId när köpet verkställs? Som jag ser det finns det både för och nackdelar med de olika varianterna. Hur man slutligen gör beror för min del på vilka övriga funktioner som ska ingå. Hade jag byggt en shop här och nu hade det sannolikt blivit med en cookie som varukorg.
Ska försöka sammanställa alla ideér jag fått och presentera något. Sen får ni såga mig :)
Man måste logga in för att kunna göra en order/offert dvs måste ett sessionId skapas som är knutet till användaren som är inloggad. Detta måste vara unikt. En Cookie lagras hos klienten med sessionid.
Kundvagnen är en tabell i databasen: tblCart där lagras artikelnummer, sessionId, antal
När ordern/offerten presenteras kan man välja på att radera eller spara. Väljs alternativet "radera" töms kundvagnen (tblCart) väljs alternativet "spara" skapas ett order/offertnummer och all info sparas i tblOrder. i tblOrder skall även kundinfo lagras.
Kunde detta fungera eller aka jag bara ha en tabell för kundvagnen och strunta i tblOrder?
Kan man med denna lösningen fortsätta att skapa order även om man stänger webläsaren. Dvs inte raderar kundvagnen?
:)
Har läst på lite och kommit fram till att session.sessionId är ett unikt värde som webservern delar ut. Då har jag ju mitt unika värde... så bra. Men haken är väl att när webservern startar om så kan värdet komma igen och det är inte unikt längre.
Jag vet inte om det spelar någon roll i mitt fall då det är tänkt att antingen radera eller spara ordern. I båda fallen raderas infon i tblCart som har aktuellt sessionId.
Vad tror ni?
I andra applikationer där varukorgen skall finnas kvar när användaren återvänder hur gör man då??
Mvh
254 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9