17. november 2005 - 20:22Der 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..
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
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 ;)
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
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.
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! ;)
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.