Sådärja.. Nu var det dags för ett par funderingar igen ! ;)
Det gäller min shop än en gång och problemet är som följer: # 1
När man "köper" en produkt läggs den till i varukorgen. Men om jag köper samma produkt än en gång så blir det en till post i varukorgen istället för att antalet uppdateras i den första.. Det skulle jag vilja ha bukt på. hur gör man ? # 2
När jag listar produkterna från databasen så läggs allt i en tabell snyggt och prydligt. Men nu skulle jag vilja lista alla produkter 2 & 2. Mao två produkter bredvid varann och inte allt på lång vertikal rad. Hur i hela fridens namn går det till då det styrs av <tr></tr> ???
.........
If Not rs.EOF or rs.BOF Then
Do Until rs.EOF or rs.BOF
%>
<tr>
<td>
<%
=rs.("field_name")
%>
</td>
<td>
<%
If rs.EOF or rs.BOF Then
Response.Write & n b s p ;
Exit Do
Else
rs.MoveNext
=rs("field_name")
End If
%>
</td>
</tr>
<%
rs.MoveNext
Loop
End If
%>
........
#1:
För att kolla om den redan finns i shopppingkorgen så är det bara att söka igenom den korgen.
Nu vet jag ju inte vad du använder för kolumner i databasen. Men jag antar att du iaf har ngt "user_id" typ sessionid och artikel_nr med i databasen.
Då är det ju bara att söka igenom tabellen efter det nya artikelnr. typ:
sql_check="SELECT ngt FROM tabell WHERE user_id="&user_id&" AND artikel_nr="&nytt_art_nr&""
set check=connection.execute(sql_check)
if check.eof then
'fanns inte med
sql="INSERT INTO tabell (user_id, artikel_nr, antal) VALUES ("&user_id&", "&nytt_art_nr&", "&nytt_antal&")"
else
sql="UPDATE TABELL SET antal=antal + "&nytt_antal&" WHERE user_id = "&user_id&""
end if
connection.execute(sql)
numcols=2
if not rs.eof then
response.write "<TABLE>"
do until rs.eof
response.write "<TR>"
for i=1 to numcols
response.write "<TD>"
if rs.eof then
response.write " "
else
response.write rs("fält")
rs.movenext
end if
response.write "</TD>"
next
response.write "</TR>"
loop
response.write "</TABLE>"
end if
------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB
Det är kanske lite bättre att spara produkterna i varukorgen i en session array, och när du lägger till en produkt så loopar du igenom arrayen, och finns tex artnr redan så ökar du bara antalet. sedan kan du när besökaren ska skicka ordern lägga in det i databasen eller skicka det som mail. Då slipper du otyget att loopa igenom en databas för varje tillägg/borttagning av produkt.
Så som den ser ut här ovan funkar den perfekt med undantaget att den inte uppdaterar antalet om man får för sig att handla en till likadan artikel.. Därav problemet.
Vad jag försökte göra var att använda denna kod:
sql_check="SELECT ngt FROM tabell WHERE user_id="&user_id&" AND artikel_nr="&nytt_art_nr&""
set check=connection.execute(sql_check)
if check.eof then
'fanns inte med
sql="INSERT INTO tabell (user_id, artikel_nr, antal) VALUES ("&user_id&", "&nytt_art_nr&", "&nytt_antal&")"
else
sql="UPDATE TABELL SET antal=antal + "&nytt_antal&" WHERE user_id = "&user_id&""
end if
connection.execute(sql)
...lite här o var men icke sa Nicke !
Jag förstår för det första inte vart jag ska ändra riktigt och definitivt inte till vad ;)
Det som jag skulle behöva lite hjälp med är att "kombinera" dessa två kodsnuttar så allt funkar...
Efter detta lovar jag att köpa ALLA aspböcker som finns :e
sql_check="SELECT AnvId FROM korg WHERE AnvId="&Session.SessionID&" AND ProdID="&Request.Form("ProdId")&""
set check=connection.execute(sql_check)
if check.eof then
'fanns inte, vi kör en insert
sql="INSERT INTO KORG (AnvId, ProdID, Antal) VALUES ("&Session.SessionId&", "&Request.Form("ProdId")&", "&Request.Form("Antal")&")"
else
'fanns redan så vi kör en update
sql="UPDATE KORG SET antal=antal + "&Request.Form("Antal")&" WHERE AnvdId= "&Session.SessionId&""
end if
'kör sql:en, vare sig det är en insert eller update
connection.execute(sql)
Är det jag som är knäpp (kanske inte förstått problemet) eller är det ni som inte tänker på att man kan summera/gruppera liknande produkter?
ehum..
Jag skulle gjort nått sånthär:
SQLStmt = "SELECT tabell.AnvId, tabell.ProdId, Sum(tabell.Antal) AS [antsum]
FROM tabell
GROUP BY tabell.AnvId, tabell.ProdId
WHERE tabell.AnvId = " & Session.SessionId & ""