webForumDet fria alternativet

Fråga angående Webshop

ASP

29 svar · 937 visningar · startad av joel_joel88

Medlem sedan nov. 20021 222 inlägg
Frågan#1

Hej!

Det är så att jag håller på att göra en webshop.
Nu har jag några frågor...

När någon beställer så skapar jag ett order.nr för varje beställning.
Ordernummret får jag utav session.sessionId, sedan plusar jag på ett slumpat nr.
Detta gör jag i fall kunden beställer flera gånger utan att stänga webläsaren.
Om jag inte gör det så blir det samma ordernr för olika beställningar.

Nu till frågan, är det ett bra sätt jag gör det på? Om inte vad finns det för bättre sätt?

Tack på förhand.

Medlem sedan maj 200010 687 inlägg
#2

SessionsId är endast unikt på så sätt att ingen har samam sessionsid samtidigt. Men de återanvänds.

Vettigast är väl att bara ha ett ordernummer som ökas på vid varje order.

Medlem sedan nov. 20021 222 inlägg
#3

Jag har har en tabell som heter kundvagn och en tabell där själva beställnings informationen ligger, dvs kunden, antal varor, och beställnings datum. Där ligger även ordernummret.

I kundvagen där varorna ligger, så får dom en status att man har beställt när man har utfört köpet. Där så kopplas varorna ihop med beställningen med hjälp av ordernumret. Då är det väldigt smidigt att använda session.SessionId

Men om man inte ska göra det då måste man väl först hämta t.ex den senaste beställningens ID och sedan plusa på 1 för att få ett nytt ordernummer.

Var det så du menade?

Medlem sedan nov. 20021 222 inlägg
#4

Finns det bättre sätt än jag nämde i mitt föregående inlägg?

Medlem sedan apr. 20031 660 inlägg
#5

HEJ!

joel_joel88 skrev:

Men om man inte ska göra det då måste man väl först hämta t.ex den senaste beställningens ID och sedan plusa på 1 för att få ett nytt ordernummer.

Var det så du menade?

Nej, det tror jag inte han gör.

Har du räknare på beställningsnumrena, vilket du har för att få unika id, får du automatiskt ett id-nummer +1 på föregående. (OM du inte valt slumpade id.)

Medlem sedan nov. 20021 222 inlägg
#6

Jo det är sant. Fast när man lägger till "varor" då måste man ju redan ha ett ordernr för att kunna koppla ihop just dom varorna man lagt i kundvagen till just den beställningen.

Fattar du vad jag menar, jag skriver kanske lite rörigt ;)

Medlem sedan juli 20015 107 inlägg
#7

då kan du juhe temporärt använda dig av sessionID? tills personen verkligen bekräftar sin beställning. då kan trolla fram ett riktigt ordernummer.

Medlem sedan nov. 20021 222 inlägg
#8

Jo men då måste byta ut det "temporära" ordernr till det riktiga, eller?

Medlem sedan juli 20003 825 inlägg
#9

Jag har har en tabell som heter kundvagn och en tabell där själva beställnings informationen ligger, dvs kunden, antal varor, och beställnings datum. Där ligger även ordernummret.

Använd ID i den tabellen som order ID. Varför skapa unika nummer när det redan finns!?

***
Det primära är väl endå att skapa unika nummer, inte att alla order kommer till avslut!

Ingen kommer tacka dig för att du inte "fyller upp" alla nummer i en viss serie. Huvudsaken är att en order är unik från en annan. Sen om en viss användare väljer att inte göra ett avslut... så är det ju inte ditt problem! :-)

Huvudsaken är att ingen annan användare får samma nummer och det får dom inte om du håller dig till ID i den tabellen.

Medlem sedan nov. 20021 222 inlägg
#10

Jag löste det så här...

1. När man gå in på sidan så skapas jag ett ordernr i en session. Detta gör jag enom att man tar det högsta id-nummret + 1. När man har utfört beställning så försvinner sessionen med ordernummret.

set rs = connect.execute("SELECT TOP 1 id FROM bestallning ORDER BY id DESC")
session("ordernr") = rs("id") + 1

rs.close
set rs = nothing

2. Om man gjort en beställning och kommer på att man vill göra en till, då skapas det ett nytt ordernummer när man lägger den en vara i kunvagnen igen.

Är detta en bra metod?

Medlem sedan apr. 20003 174 inlägg
#11

Nja, då kan du ju bara tillåta 1 besökare på sidan samtidigt.
Kommer det in flera personer på sidan innan man utfört sin beställning så kommer ju alla få samma Id.
Inte så bra. :)

Medlem sedan juni 20003 076 inlägg
#12

joel_joel88 skrev:

Jo det är sant. Fast när man lägger till "varor" då måste man ju redan ha ett ordernr för att kunna koppla ihop just dom varorna man lagt i kundvagen till just den beställningen.

Nej, endast använd sessionid i kundkorgen.

joel_joel88 skrev:

Jo men då måste byta ut det "temporära" ordernr till det riktiga, eller?

Nja, orderid bör vara (som även andra har skrivit) just orderid. alltså id från ordertabellen.
när kunden gjort klart sin order töms ju hela kundkorgen och kunden kan börja om med sina beställningar.

Medlem sedan nov. 20021 222 inlägg
#13

Palle, hur kan jag lösa det på bästa sättet?

Medlem sedan dec. 19996 721 inlägg
#14

När första varan läggs i varukorgen (session("orderid") är tom) lägger du in en ny rad i order-tabellen, och plockar order-id:t därifrån.

Medlem sedan nov. 20021 222 inlägg
#15

Aha nu tror jag att jag fattar.
När man beställer lägger manin beställnings-informationen i den "skapade" raden i order-tabellen?

Medlem sedan juni 20003 076 inlägg
#16

joel_joel88 skrev:

I kundvagen där varorna ligger, så får dom en status att man har beställt när man har utfört köpet. Där så kopplas varorna ihop med beställningen med hjälp av ordernumret. Då är det väldigt smidigt att använda session.SessionId

Jag läste tydligen dina inlägg lite för dåligt.
Men här ligger ditt problem, använd inte kundkorgen som den slutliga ordertabellen utan kopiera över all info från kundkorgstabellen till en ordertabell vid slutfört köp. I och med det så tömmer du kundkorgstabellen och kunden kan göra nya ordrar. Så gör jag iallafall. :)

emission skrev:

När första varan läggs i varukorgen (session("orderid") är tom) lägger du in en ny rad i order-tabellen, och plockar order-id:t därifrån.

Skulle jag inte göra. Varför belasta ordertabellen med tomma poster om inte kunden slutför sitt köp?!

Medlem sedan nov. 20021 222 inlägg
#17

Men jag kan ju inte lägga över alla "varor" till ordertabellen. Varför inte låta dom vara kvar i kundvagen och sammanbinda dom till ordertabellen via ett ordernr.
När kunden sedan har beställt så får varorna i kundvagen en status att dom är beställda och därmed visas inte i själva kundvagnen.

Medlem sedan juni 20019 024 inlägg
#18

Jag tycker det är fel tillvägagångssätt.

Det är ju inte så att man går in i en butik, tar en vara och helt plötsligt får ett avtal med ett ordernummer. Låt säga att fem personer utav tio lägger varor i kundvagnen, men inte köper. Det kan ju omöjligt bli fem ordrar?

Det är först när man har köpt varorna som man får ett ordernummer.

Något i stil med detta:

1. Kund lägger vara i kundvagn, upprepade gånger. En cookie håller reda på användaren.
2. Kunden går till kassan.
3. Efter att ha fyllt i sina uppgifter sparas varorna som en ny order (i tabellen "order").
4. Alla varor sparas i tabellen "order_items" med ordernumret som en relation till tabellen "order".

Titta här under rubriken "Relationships and Joins":
http://www.edm2.com/0612/msql7.html - där finns till och med ett exempel på ett grundläggande ordersystem, hur databasdesignen ska se ut.

r) Hmmm, det lyckades komma tre inlägg medan jag skrev detta. Ignorera detta om du vill. ;)

Medlem sedan dec. 19996 721 inlägg
#19

doggelito skrev:

emission skrev:

När första varan läggs i varukorgen (session("orderid") är tom) lägger du in en ny rad i order-tabellen, och plockar order-id:t därifrån.

Skulle jag inte göra. Varför belasta ordertabellen med tomma poster om inte kunden slutför sitt köp?!

Helt sant. Det var med utgångspunkt i att joel_joel88 endast använde en tabell. Principen är dock rätt, även om man delar upp i två tabeller (vilket inte är en nödvändighet, men smidigt...).

Medlem sedan juni 20003 076 inlägg
#20

joel_joel88 skrev:

Varför inte låta dom vara kvar i kundvagen och sammanbinda dom till ordertabellen via ett ordernr.

Klart du kan... men det är inte rätt! :) Se Pace:s inlägg ovan.

268 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)