webForumDet fria alternativet

Hur skickar jag antal till kundkorgen

ASP

13 svar · 513 visningar · startad av timedia

Medlem sedan maj 2001420 inlägg
Frågan#1

Har följande som gör att man flyttar en vara till kundkorgen.

Response.Write("<input type='text' name='anntal' value='0' size='3'><a href='shBasket.asp?addItem="& arrArtiklar(0,u) &"' target='underst'> <img src='images/kop.gif' alt='Info' width='43' height='14' border='0'> </A>")

I rutan 'anntal' vill jag att man ska skriva antal artiklar och att det värdet går till kundkorgen shBasket.asp (ligger i en annan frame) Hur gör man detta?
shbasket.asp

<%	Option Explicit ' Vi vill ha koll på våra variabler 
%><!--#include file="prevent_cache.asp"-->
<!--#include file="connection.asp"-->
<!--#include file="functions.asp"--><%

'	Förklaring: Kundvagnen.
'	Skicka med följande i QuerySträngen:
'		addItem=<ID> 
'			Lägger till varan med ID nummret <ID> i kundvagnen
'		removeItem=<ID>
'			Tar bort varan med ID nummret <ID> från kundvagnen
'		EnsureVisible=<ID>
'			Visar varan med ID nummret <ID> i listan

	Dim itemID ' as Long
	Dim shBasket ' as String
	Dim tmpVar ' as Variant
	Dim one, noItems
	Dim Changed ' as Boolean
	'Session("shBasket") = ""
'	Session("shBasket") är kundvagnen.
	shBasket = Session("shBasket")

	'// Vi undersöker om något läggs i korgen:
	IF Request.Querystring("addItem")<>"" THEN
		itemID = Request.QueryString("addItem")
		IF shBasket<>"" THEN
			' Vi tar reda på om varan redan finns i korgen..
			If Instr( shBasket, "[" & itemID & "]") > 0 then 
				'* Den finns här, så vi får leta på den!
				'  för att kunna uppdatera antalet!
				tmpVar = Split( shBasket, "|")
				For Each one In tmpVar
					IF Left( one, InStr( one, ".")-1) = "[" & itemID & "]" Then
						noItems = Right( one, Len(one) - instr(one, "."))
						shBasket = Replace(shBasket, one, "[" & itemID & "]." & Int(noItems)+1)
						Changed = True
						Exit For
					End If
				Next
				
			Else ' Om korgen inte är tom, men inte innehåller varan
				'* Den finns inte i korgen, då lägger vi till den!
				shBasket = shBasket & "|[" &  itemID & "].1"
				Changed = True
			End If
			
		ELSE ' Om korgen är tom...
			' [ID].Antal|
			shBasket = "[" & itemID & "].1"
			Changed  = True
		END IF
		Session("shBasket") = shBasket
		
	' Eller om något skall tas bort
	ELSEIF Request.QueryString("removeItem")<>"" THEN
		Dim newBasket

		itemID = Request.QueryString("removeItem")
		
		tmpVar = Split( shBasket, "|")
		If Instr( shBasket, "[" & itemID & "]") > 0 then 
				'* Den finns här, så vi får leta på den!
				'  för att kunna ta bort den!				tmpVar = Split( shBasket, "|")
				For Each one In tmpVar
					IF Left( one, InStr( one, ".")-1) <> "[" & itemID & "]" Then
						if newBasket<>"" THEN newBasket = newBasket & "|"
						newBasket = newBasket & one
					Else
						noItems = Right( one, Len(one) - instr(one, "."))

						noItems = int(noItems)-1
						if noItems> 0 then
							if newBasket<>"" THEN newBasket = newBasket & "|"
							newBasket = newBasket & "[" & itemID & "]." & noItems
						end if
						Changed = True
					End If
				Next
				
		End If
		Session("shBasket") = newBasket
	END IF
	
	' Om korgen ändrats så laddar vi in sidan utan argument,
	' så att man inte får flera av samma vara om man laddar om!
	If Changed = True THEN
		
		Response.ReDirect "shBasket.asp" & IIf(itemID<>"", "?EnsureVisible=" & itemID, "")
		Response.End 
	End If

	
	' En enkel funktion som hämtar ut antalet köpta varor

	
	Dim a, itemsInBasket
	IF shBasket<>"" THEN
		a = Split(shBasket, "|")
		For Each One in a
			If itemsInBasket <> "" THEN itemsInBasket = itemsInBasket & ","
			itemsInBasket = itemsInBasket & Mid(one, 2, InStr(one, "]")-2)
		next
	End If
	
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
	<!-- <%=shBasket%> -->
	<title>shBasket</title>
	<link rel="STYLESHEET" type="text/css" href="shStyle.css">
</head>

<body topmargin="0" leftmargin="0" BGCOLOR="#EEEEEE">

<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
	<TR>
		<FORM METHOD="GET" ACTION="shBasket.asp">
		<TD>
		<% IF shBasket <> "" THEN %>
		&nbsp;
		<SELECT NAME="removeItem" CLASS="shBasketItems" STYLE="Width: 200">
<%
			
			Dim v, numRecords, EnsureVisible
			
			Set Rs = Server.CreateObject("ADODB.Recordset")
			Rs.Open "SELECT Id, ArtNr, Namn5 FROM Varor WHERE Id IN (" & itemsInBasket & ")",Conn,1,1

			numRecords = Rs.RecordCount-1
			
			For v = 0 To numRecords
				EnsureVisible = ""
				IF cStr(Rs.Fields("id").Value) = Request.QueryString("EnsureVisible") Then EnsureVisible = " SELECTED "
				
				Response.Write Chr(9) & chr(9)

				Response.Write "<OPTION " & EnsureVisible & " VALUE=" & Chr(34) & Rs.Fields("id").Value &  Chr(34) & ">" & itemCount( Rs.Fields("id").Value, True ) & " "  & Rs.Fields("Namn5").Value & "</OPTION>" & VbCrLf

	Rs.MoveNext
			Next
			
			
			Rs.Close
			Set Rs = Nothing
			
		%>		</SELECT>
		<SPAN CLASS="shBasketItems"><A HREF="#" OnClick="document.forms[0].submit()" CLASS="shCheckoutLink" target="_self">Ta bort markerad vara</A><br>
		&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="shCheckout.asp" CLASS="shCheckoutLink" target="shContent">Till kassan &gt;&gt;</A>
		</SPAN>
		<% ELSE %>
			<SPAN CLASS="shBasketItems">Inga varor i korgen.</SPAN>
		<% END IF %>
		</TD>
		</FORM>
	</TR>
</TABLE>
</body>
</html>
<%
	' CleanUp
	Conn.Close
	Set Conn = Nothing

%>
Medlem sedan maj 2001420 inlägg
#2

Försöker igen så inte tråden dör. Ingen som vet?

Medlem sedan juni 200032 967 inlägg
#3

Gör ett ordentligt formulär.

Response.Write("<form action='shBasket.asp' method='get' target='underst'><input type='text' name='anntal' value='0' size='3'><input type='hidden' name='addItem' value='" & arrArtiklar(0,u) & "'> &"'<input type='image' src='images/kop.gif' title='Info' width='43' height='14' border='0'></form>")
Medlem sedan maj 2001420 inlägg
#4

Tack @nders :)
,men hur får jag med värdet över till shbasket? Nu blir det bara 1.

Medlem sedan juni 200032 967 inlägg
#5

Request.Querystring("anntal")

Eller wass? Jag förstår nog inte riktigt problemet...

mvh

Medlem sedan maj 2001420 inlägg
#6

Titta här så förstår du vad jag menar:
http://www.gamol.se/prod.asp

Korrekt antal går inte till kundkorgen. (koden till kundkorgen ligger längst upp på denna sidan)

Medlem sedan juni 200032 967 inlägg
#7

Korrekt antal går nog till kundkorgen, det är nog du som inte tar hand om värdet ordentligt. Visa koden.

mvh

Medlem sedan maj 2001420 inlägg
#8

Koden ligger i det första inlägget här i tråden. Filen heter shbasket.asp

Medlem sedan juni 200032 967 inlägg
#9

Du använder ju aldrig anntal? Jag vet inte hur din kundkorg fungerar, men någonstans har du hårdkodat antalet 1. Kan det vara här:

shBasket = Replace(shBasket, one, "[" & itemID & "]." & Int(noItems)+1)

Respektive här:

'* Den finns inte i korgen, då lägger vi till den!
shBasket = shBasket & "|[" &  itemID & "].1"
Medlem sedan sep. 2003301 inlägg
#10
<form action='shBasket.asp' method='get' target='underst'>
<input type='text' name='anntal' value='0' size='3'>
<input type='hidden' name='addItem' value='579'>
<input type='image' src='images/kop.gif' title='Info' width='43' height='14' border='0'>
</form>

Kollade i din ASP kod och jag hittar ingestans att du tar upp "anntal" (borde stavas "antal" :bire )

om du plockar upp den och läger in den på lämpligt ställe i din kundvagn så kan du nog lösa det...

Såg att om du klickar på samma vara flera ggr så ökar den i antal.

FYI lägg till lite vbCrLf i di kod på lämpiga ställen så att den blir hanterbar om du vill gå in och kolla i den genererade HTML koden

Medlem sedan maj 2001420 inlägg
#11

'anntal' var något som jag hittade på för att illustrera hur jag har tänkt mig. Problemet består nu i att skicka detta värdet till kundkorgen. Tror att nedanstående kod ska ändras så at värdet tas emot:

shBasket = shBasket & "|[" &  itemID & "].1"

I stället för 1 ska den läsa in 'anntal'. Hur gör jag detta?

Medlem sedan sep. 2003301 inlägg
#12

timedia skrev:

'anntal' var något som jag hittade på för att illustrera hur jag har tänkt mig. Problemet består nu i att skicka detta värdet till kundkorgen. Tror att nedanstående kod ska ändras så at värdet tas emot:

shBasket = shBasket & "|[" &  itemID & "].1"

I stället för 1 ska den läsa in 'anntal'. Hur gör jag detta?

Dim anntal
anntal= Request.Querystring("anntal")
shBasket = shBasket & "|[" &  itemID & "]." & anntal

Edit: TypoEdit:Typo

Medlem sedan maj 2001420 inlägg
#13

Tack Fraggel, NU funkar det :bire

Medlem sedan dec. 20001 626 inlägg
#14

Vacker en GAMMAL bjorn har, men e nyfiken pa var denna kod for denna kundvagn e nerladdad ifran?? har sett flera websidor som anvander shbasket.asp, shItems.asp undrar bara var jag kan ladda hem detta systen fran?? verkar vara hel shysst, eller kanner ni till nagra bra e-handelsystem som man kan ladda hem, med databas o hela koret, e nyfiken pa hur dessa ser ut??

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)