Avatar billede pixelboxdk Nybegynder
17. november 2005 - 20:22 Der er 11 kommentarer og
3 løsninger

beløb i alt

Hej eksperter!

Jeg er igang med at lave en webshop, og har fået det hele til at fungere (næsten).. men "i alt" prisen, der skal vises i kurven kan jeg sgu ikke få til at virke.. Jeg ved det bare er tal der skal ligges sammen, men.. ja.. det gider bare ikke virke..

Jeg har tabellen "kurv", hvor de midlertidige ordre som vises i kurven befinder sig.. i denne tabel er der et produkt-ID, som referere til tabellen "varer" hvor selve produktet ér, og hvor der er angivet en pris..

I selve kurven udskriver jeg så alle produkterne i et loop.. og de produkters pris skal ligges sammen..

Hvordan vil i gøre det? Gerne nogle eksempler :)

Tak på forhånd!
Hilsen Daniel
Avatar billede nielle Nybegynder
17. november 2005 - 20:34 #1
Noget i denne stil:

SELECT Sum(k.antal * v.pris) AS iAlt FROM kurv AS k, varer AS v WHERE k.kurvId=42 AND k.produktId=v.id
Avatar billede pixelboxdk Nybegynder
17. november 2005 - 20:41 #2
Har du ikke lyst til at fortælle mig hvad du præcist gør lige der? :)
Jeg havde mere tænkt på noget i stil med at selecte de produkter der skal være i kurven.. og så lave et nyt loop og ligge de tal sammen.. Ved ikke om det giver mening? Men jeg kan sgu ikke gennemskue hvad du gør der ;)
Avatar billede nielle Nybegynder
17. november 2005 - 21:00 #3
Jo da:

For at få indholdet af kurven med id=42 laver du normalt en:

SELECT * FROM kurv WHERE kurvId = 42

Du har ikke skrevet noget om det, men jeg gætter på at du også angiver hvor mange vare der er af den enkelte type? Din SQL kunne derfor også se sådan her ud:

SELECT produktId, antal FROM kurv WHERE kurvId = 42

Imidlertid kan du jo ikke bruge produktId til så meget... Heldigvis kan du bruge dette til at slå op i varer-tabellen med:

SELECT varer.pris, kurv.antal FROM kurv, varer WHERE kurv.kurvId = 42 AND kurv.produktId=varer.id

Læg mærke at man skriver hhv. "varer." og "kurv." for at vise hvilken tabel værdien kommer fra. Dette bliver hurtigt lidt tungt og derfor kan man med fordel indføre alias'er vha. AS:

SELECT v.pris, k.antal FROM kurv AS k, varer AS v WHERE k.kurvId = 42 AND k.produktId=v.id

Når du har et antal og en pris for den enkelte række kan du jo udregne prisen ved at gange de to:

SELECT v.pris * k.antal AS pris FROM kurv AS k, varer AS v WHERE k.kurvId = 42 AND k.produktId=v.id

- hvor vi igen bruger AS for at få prisen ud under navnet "pris".

Imidlertid var du ikke interesseret i den enkelte pris, men bare totalen, og til det bruger man sum():

SELECT Sum(v.pris * k.antal) AS iAlt FROM kurv AS k, varer AS v WHERE k.kurvId = 42 AND k.produktId=v.id

Håber at det gav mening?


PS: Hvis du ikke har noget antal, så vil SQL'em se sådan her ud i stedet:

SELECT Sum(v.pris) AS iAlt FROM kurv AS k, varer AS v WHERE k.kurvId = 42 AND k.produktId=v.id
Avatar billede cpufan Juniormester
17. november 2005 - 21:52 #4
det lyder som om din kurv er et script

så for at få sum kan du gøre sådan

sum = 0

loopstart ' pseudokode
sum = sum + (produktpris * antalprodukter)
loopslut

jeg ved jo ikke lige hvordan dine koder ser ud for de enkelte ting
men ovenstående forklarer det meget godt
Avatar billede pixelboxdk Nybegynder
17. november 2005 - 21:53 #5
Nu tænker jeg lidt logisk.. hvorfor gange og ikke plusse? :)
Avatar billede nielle Nybegynder
17. november 2005 - 21:56 #6
Når der f.eks. er 5 varer af typen A i din kurv, så koster de jo også 5 gange så meget til sammen.
Avatar billede pixelboxdk Nybegynder
17. november 2005 - 21:59 #7
cpufan - vil du indsætte den kode i mit nuværende loop, eller lave et nyt?
Avatar billede pixelboxdk Nybegynder
17. november 2005 - 22:01 #8
nielle > det er selvfølgelig rigtigt! :)

Jeg vil lige prøve at lege lidt med det! jeg vender nok frygteligt tilbage ;)
Avatar billede webnoob Nybegynder
17. november 2005 - 22:08 #9
Ved ikke om det er lige det du har brug for, men det kan måske lede dig i retning af det du skal bruge.

varetotalen=0
sql="select * from varekurv where sessionsid='"&session.sessionid&"'"
set record2=rs.execute(sql)
do while not record2.eof
sql="select * from vare where vareid='"&record2("vareid")&"'"
set record=rs.execute(sql)
x=1
varetotal=record2("antal")*record("varepris")
varetotalen=varetotalen+varetotal


jeg har selv lavet en shop og der har jeg gjort sådan her.
Avatar billede cpufan Juniormester
17. november 2005 - 22:48 #10
hvis jeg kan få din kode at se, skulle jeg nok kunne tilføje det.

bare den kode hvor du har kurven
Avatar billede pixelboxdk Nybegynder
18. november 2005 - 10:31 #11
Så har jeg leget med det, og fået det til at virke.. 1000 tak ;)
Hvis i (cpufan, webnoob og nielle) vil oprette et svar, ville det være perfekt! i har alle være yderst behjælpelige! ;)
Avatar billede nielle Nybegynder
18. november 2005 - 16:00 #12
Svar :^)
Avatar billede cpufan Juniormester
18. november 2005 - 16:14 #13
go' weekend
Avatar billede webnoob Nybegynder
18. november 2005 - 18:07 #14
selv tak og go' weekend
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester