BireMedlem sedan dec. 199919 074 inlägg 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> ???
Shopen ligger på www.envikenrecords.com om det kan va till nån hjälp..
Hjäälp ;)
------------------
Explorer in a further region of experience.
<A HREF="http://www.lifestyleshop.nu" TARGET=_blank>www.LifeStyleShop.nu</A>
PatrikBMedlem sedan mars 20002 836 inlägg Hello,
kanske ngt sådant här för listningen 2 o 2:
.........
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
%>
........
Har ej kollat koden men ngt liknande borde funka.
cu
PatrikB
------------------
=================================
** ZWGdesign **
=================================
[Redigerat av PatrikB den 26 jun 2000]
fredrikMedlem sedan dec. 19991 072 inlägg #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)
Sådär nånting borde funka!
------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
www.streetwise.se/fredrik/
emissionMedlem sedan dec. 19996 721 inlägg
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
[Redigerat av emission den 26 jun 2000]
ToonsterMedlem sedan feb. 20001 590 inlägg 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.
/T
------------------
<*~-. Toonster .-~*>
fredrikMedlem sedan dec. 19991 072 inlägg Håller med Toonster...
Satsa på en array. Det går dessutom mkt snabbare än med en databas.
------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
www.streetwise.se/fredrik/
emissionMedlem sedan dec. 19996 721 inlägg Mitt bidrag är att man ska satsa på ett dictionary-objekt. Klart snabbast.
BireMedlem sedan dec. 199919 074 inlägg Jag får ett bryt på detta nu ;)
<%
Response.Status = "204 No Content"
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open Session("shopdata")
sql_check="SELECT * FROM KORG WHERE Session.SessionId="&Session.SessionId&" AND KorgId="&KorgId&""
set check=connection.execute(sql_check)
if check.eof then
SQLStmt = "INSERT INTO KORG"
SQLStmt = SQLStmt & "(AnvId, ProdId, Antal)"
SQLStmt = SQLStmt & "VALUES(" & Session.SessionId & "," & Request.Form("ProdId") & ", " & Request.Form("Antal") & ")"
Connection.Execute(SQLStmt)
Connection.Close
else
sql="UPDATE KORG SET antal=antal + "&antal&" WHERE Session.SessionId = "&Session.SessionId&""
end if
connection.execute(sql)
%>
<%Response.Redirect("basket.asp")%>
Jag får inte detta att funka... uäää
Vad gör jag för fel ??
------------------
Explorer in a further region of experience.
<A HREF="http://www.lifestyleshop.nu" TARGET=_blank>www.LifeStyleShop.nu</A>
emissionMedlem sedan dec. 19996 721 inlägg Du säger inte vad som är fel. Däremot finns det ett par detaljer som jag ser nu...
- Dumt att ha ConnectionString:en i en Session-variabel (shopdata)
- connection.execute(sql) ska ligga före "end if"
- Om detta är all kod så lär första SELECT:en inte funka, eftersom Korgid inte tilldelats något värde
- UPDATE-satsen uppdaterar alla poster med rätt SessionID, oavsett vilken produkt det gäller
- Du får bestämma dig om du vill ha status="204 No content" eller redirect("basket.asp"). De kolliderar
------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB
[Redigerat av emission den 27 jun 2000]
BireMedlem sedan dec. 199919 074 inlägg Ok.. Ska försöka förklara hur detta elände ligger till ;)
När man lägger till en artikel i "produkter.asp" postas infon till "add.asp":
<%
Response.Status = "204 No Content"
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open Session("shopdata")
SQLStmt = "INSERT INTO KORG"
SQLStmt = SQLStmt & "(AnvId, ProdId, Antal)"
SQLStmt = SQLStmt & "VALUES(" & Session.SessionId & "," & Request.Form("ProdId") & ", " & Request.Form("Antal") & ")"
Connection.Execute(SQLStmt)
Connection.Close
%>
<%Response.Redirect("basket.asp")%>
...och sedan uppdateras varukorgen "basket.asp".
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
------------------
Explorer in a further region of experience.
<A HREF="http://www.lifestyleshop.nu" TARGET=_blank>www.LifeStyleShop.nu</A>
fredrikMedlem sedan dec. 19991 072 inlägg ok...ngt sånt här då:
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)
Det borde fungera!
------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
www.streetwise.se/fredrik/
BrimbaMedlem sedan dec. 19995 875 inlägg Ursäkta mig lite.
Ehum..
Ä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 & ""
Är det kanske inte det du är ute efter?
Ha det bra!
------------------
Mvh
Patrik
aka Brimba
www.datormaklarna.se
patrik@datormaklarna.se
BireMedlem sedan dec. 199919 074 inlägg Jaaa du (LottoÅke) Brimba.. ;)
Eftersom jag inte har en aning om vad du menar så är det väl lika bra att du förklarar lite närmare så att puckobire begriper nån gång :e
Skulle det räcka med den kodsnutten eller ska den in tillsammans med den ursprungliga tex ?
Jag är helt nollställd just samt inte hemma så jag kan prova ;)
------------------
Explorer in a further region of experience.
<A HREF="http://www.lifestyleshop.nu" TARGET=_blank>www.LifeStyleShop.nu</A>
BrimbaMedlem sedan dec. 19995 875 inlägg Saken är den att du lägger in allt i tabellerna, det är när du listar varukorgen som du använder min kod.
tabellen kan se ut så här:
kund id | artikel | antal
544 | 34 | 2
544 | 33 | 1
544 | 34 | 1
Sedan när du listar det i varukorgen ser det ut såhär:
Artikel 34 ---- Antal 3
Artikel 33 ---- Antal 1
Hoppas du förstår. :)
Annars är jag online på ICQ :) woop!
------------------
Mvh
Patrik
aka Brimba
www.datormaklarna.se
patrik@datormaklarna.se
BireMedlem sedan dec. 199919 074 inlägg Jag tror att jag är med nu ! ;)
kollar under kvällen.
Tanx !
------------------
Explorer in a further region of experience.
<A HREF="http://www.lifestyleshop.nu" TARGET=_blank>www.LifeStyleShop.nu</A>
BireMedlem sedan dec. 199919 074 inlägg Nja... Fattar nog inte riktig hur detta skall gå till...
<%
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open Session("shopdata")
If Request("Id") <> "" Then
SQLStmt = "DELETE FROM Korg Where KorgId =" & Request("Id")
Connection.Execute(SQLStmt)
End If
*********BRIMBAS EXEMPEL********
SQLStmt = "SELECT Korg.Antal, Korg.KorgId, Korg.ProdId, Prod.Produkt, Prod.Beskrivning, Prod.Pris, Prod.Titel, Korg.AnvId, Sum(Korg.Antal) AS [antsum] FROM Korg, Prod WHERE Korg.AnvId = " & Session.SessionId & " GROUP BY Korg.AnvId, Korg.ProdId"
*********/BRIMBAS EXEMPEL********
**********URSPRUNGLIG KOD********
SQLStmt = "SELECT Korg.Antal, Korg.KorgId, Korg.ProdId, Prod.Produkt, Prod.Beskrivning, Prod.Pris, Prod.Titel, Korg.AnvId FROM Korg, Prod WHERE Korg.ProdId = Prod.ProdId AND (Korg.AnvId = " & Session.sessionId & ") Order by Produkt"
**********/URSPRUNGLIG KOD********
SET RS = Connection.Execute(SQLStmt)
Function GetPrice()
TotalPris = RS("Antal") * RS("Pris")
GetPrice = FormatNumber(TotalPris,2)
End Function
%>
Felmeddelandet:
Microsoft OLE DB Provider for ODBC Drivers fel '80004005'
[Microsoft][Drivrutin för ODBC Microsoft Access] Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'Antal'.
Hjäälp.. ;)
------------------
Explorer in a further region of experience.
<A HREF="http://www.lifestyleshop.nu" TARGET=_blank>www.LifeStyleShop.nu</A>
[Redigerat av Bire den 28 jun 2000]
BrimbaMedlem sedan dec. 19995 875 inlägg Om du skall göra enligt mitt exempel skall det vara:
*********BRIMBAS EXEMPEL********
SQLStmt = "SELECT Korg.KorgId, Korg.ProdId, Prod.Produkt, Prod.Beskrivning, Prod.Pris, Prod.Titel, Korg.AnvId, Sum(Korg.Antal) AS [antsum]
FROM Korg, Prod
WHERE Korg.AnvId = " & Session.SessionId & "
GROUP BY Korg.KorgId, Korg.ProdId, Prod.Produkt, Prod.Beskrivning, Prod.Pris, Prod.Titel, Korg.AnvId"
*********/BRIMBAS EXEMPEL********
Du kan ju prova iaf :)
------------------
Mvh
Patrik
aka Brimba
www.datormaklarna.se
patrik@datormaklarna.se
BireMedlem sedan dec. 199919 074 inlägg Nu fick jag detta fel:
Kompileringsfel i Microsoft VBScript fel '800a0409'
Oavslutad strängkonstant
/golf/basket.asp, rad 12
SQLStmt = "SELECT Korg.KorgId, Korg.ProdId, Prod.Produkt, Prod.Beskrivning, Prod.Pris, Prod.Titel, Korg.AnvId, Sum(Korg.Antal) AS [antsum]
------------------------------------------------------------------------------------------------------------------------------------------^
------------------
Explorer in a further region of experience.
<A HREF="http://www.lifestyleshop.nu" TARGET=_blank>www.LifeStyleShop.nu</A>
BrimbaMedlem sedan dec. 19995 875 inlägg úngefär:
*********BRIMBAS EXEMPEL********
SQLStmt = "SELECT Korg.KorgId, Korg.ProdId, Prod.Produkt, Prod.Beskrivning, Prod.Pris, Prod.Titel, org.AnvId, Sum(Korg.Antal) AS [antsum] FROM Korg, Prod WHERE Korg.AnvId = " & Session.SessionId & " GROUP BY Korg.KorgId, Korg.ProdId, Prod.Produkt, Prod.Beskrivning, Prod.Pris, Prod.Titel, Korg.AnvId"
*********/BRIMBAS EXEMPEL********
------------------
Mvh
Patrik
aka Brimba
www.datormaklarna.se
patrik@datormaklarna.se
[Redigerat av Brimba den 28 jun 2000]