---
title: "Butikskorgfunktion"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/9730-butikskorgfunktion"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Addeladde"
published: "2001-05-25T16:11:00.000Z"
updated: "2001-05-26T21:40:00.000Z"
replies: 9
views: 285
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/9730-butikskorgfunktion"
---

# Butikskorgfunktion

## #1 — Addeladde, 2001-05-25T16:11Z

Jag sitter och klurar på en liten funktion till en korg.

Butiken ska sälja kläder och då finns det två produkt alternativ till varje produkt. produktalternativ = storlek och färg. På sidan finns det två st korgar en liten korg i en frame längst ner på sidan och en egen sida för den stora korgen. Om vi säger att man har handlat två pikétröjer med olika storlek så vill jag att i den lilla korgen ska stå:

2 st piketröja  á  399 kr

medans i den stora korgen ska det stå 
1 st piketröja large á 399 kr
1 st piketröja medum á 399 kr

korgen är uppbygd på det sättet att det är en databas de två tröjorna sparas alltså på varsin rad i tabellen Den stora korgen är redan klar men frågan är hur jag får en funktion som gör att om en produkt har samma produkt ID fast med olika produktalternativ läggs ihop och ger en variabel värdet två 

så här ser sql satsen ut nu

```
<%
' Get the shopping cart
sqlString = "SELECT korg_id, korg_alternativ1, korg_alternativ2, produkt_namn, " &_
  "produkt_pris, korg_antal " &_
  "FROM korg, produkter " &_
  "WHERE korg_userID=" & userID & " " &_
  "AND korg_produktID = produkt_id " &_
  "ORDER BY korg_id DESC"
SET RS = Con.Execute( sqlString )

IF RS.EOF THEN
%>
```

Permalänk: https://www.webforum.nu/p/9730

## #2 — LarsG, 2001-05-25T17:09Z

```
sql = & _
"select korg_id,produkt_namn,pris,count(*) as antal
  from korg, produkter " &_
"WHERE korg_userID=" & userID & " " &_
"AND korg_produktID = produkt_id " &_
" group by korg_id,produkt_namn,pris " & _
"ORDER BY korg_id DESC
```

För varje unik kombination av korg_id, produkt_namn och pris får du fram antalet förekomster.

Permalänk: https://www.webforum.nu/p/270087

## #3 — Addeladde, 2001-05-25T17:50Z

Det fungerar inte det blir två fält istället för ett. Jag har gjort om funktionen lite så att den fungerade.

tar med hela koden

```
    <%

sqlString = "select korg_id, produkt_namn, produkt_pris, count(*) as antal " &_
"FROM korg, produkter " &_
"WHERE korg_userID=" & userID & " " &_
"AND korg_produktID = produkt_id " &_
"GROUP by korg_id, produkt_namn, produkt_pris " & _
"ORDER BY korg_id DESC"
SET RS = Con.Execute( sqlString )

IF RS.EOF THEN
%>

   <p><select size="1" name="Varukorg">
    <option>Din korg är
    tom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    </option>
    &nbsp;
    </select></p>

<% 
ELSE 
orderTotal = 0

%>
<p><select size="1" name="Korglista">
    <% WHILE NOT RS.EOF 
orderTotal = orderTotal + ( RS( "produkt_pris" ) * RS( "antal" ) )
%>
  <option value="<%=Server.HTMLEncode( RS( "produkt_namn" ) )%>"> <%=Server.HTMLEncode( RS( "antal" ) )%>&nbsp;st&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<%=Server.HTMLEncode( RS( "produkt_namn" ) )%>
  ;&nbsp;&nbsp;&nbsp; á&nbsp;&nbsp;&nbsp;&nbsp;<%=formatNumber( RS( "produkt_pris" ) )%>&nbsp;kr</option>
  &nbsp;

  &nbsp; <% 
RS.MoveNext
WEND
%>
  </select>
```

Permalänk: https://www.webforum.nu/p/270088

## #4 — LarsG, 2001-05-25T18:12Z

Vad är korg_id för något? Om det bara är en räknare i tabellen krog så behöver den inte vara med i selectfrågan. Dvs

```
sql = & _
"select produkt_namn,pris,count(*) as antal
from korg, produkter " &_
"WHERE korg_userID=" & userID & " " &_
"AND korg_produktID = produkt_id " &_
" group by produkt_namn,pris " & _
"ORDER BY produkt_namn DESC "
```

Permalänk: https://www.webforum.nu/p/270089

## #5 — Addeladde, 2001-05-26T12:31Z

KorgID är bara en räknare men den gör så att den senaste produkten som man la i korgen visas högst upp.

Permalänk: https://www.webforum.nu/p/270090

## #6 — Addeladde, 2001-05-26T13:20Z

Jag har fått det att fungera nu men om jag köper 3 st medum tröjor och 2 st large så visar korgen bara 2 st när det igenligen ska vara 5 st.

jag får det inte att fungera att sortera efter korg_id det fungera bara efter produkt_namn

Permalänk: https://www.webforum.nu/p/270091

## #7 — LarsG, 2001-05-26T13:27Z

Du har alltså en kolumn i tabellen korg som innehåller antal som man köper?

I så fall kan du byta ut 

```

   count(*) as antal
```

mot

```

   sum(antal) as antal
```

Permalänk: https://www.webforum.nu/p/270092

## #8 — Addeladde, 2001-05-26T13:44Z

Nu fungerar det perfekt.
Tack så hemskt mycket för hjälpen

Permalänk: https://www.webforum.nu/p/270093

## #9 — Addeladde, 2001-05-26T16:25Z

Hur ska man göra för att kunna sortera efter korg_id så att den senaste produkten som ä inlagd visas högst upp.

om jag lägger till korg_id vid raden Group by så blir det två separata objekt istället för ett som det ska vara.

```
 
sqlString = "select produkt_namn, produkt_pris, sum(korg_antal) as antal2 " &_
"FROM korg, produkter " &_
"WHERE korg_userID=" & userID & " " &_
"AND korg_produktID= produkt_id " &_
"GROUP by produkt_namn, produkt_pris" & _
"ORDER by korg_id DESC"
SET RS = Con.Execute( sqlString )
```

Detta felmeddelande får jag

> Feltyp:
> Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
> \[Microsoft\]\[ODBC SQL Server Driver\]\[SQL Server\]Incorrect syntax near the keyword 'by'.
> /td/butik/korg2.asp, line 143

Permalänk: https://www.webforum.nu/p/270094

## #10 — LarsG, 2001-05-26T21:40Z

Anledningen till att du får syntaxfel är att det saknas ett blanktecken mellan produkt_pris och order.

```
sqlString = "select produkt_namn, produkt_pris, sum(korg_antal) as antal2 " &_
"FROM korg, produkter " &_
"WHERE korg_userID=" & userID & " " &_
"AND korg_produktID= produkt_id " &_
"GROUP by produkt_namn, produkt_pris" & _
" ORDER by korg_id DESC"
SET RS = Con.Execute( sqlString )
```

Jag tror dock inte att det hjälper. Om du har group by så måste nog det man gör order by på vara med i select-listan.

Permalänk: https://www.webforum.nu/p/270095

---

Tråden på webben: https://www.webforum.nu/amne/asp/9730-butikskorgfunktion
