|
| Items bliver ikke lagt i kurv Fra : Flemming C. Lund |
Dato : 08-12-01 21:12 |
|
Jeg har et lille problem: Jeg har en indkøbsfunktion, som af en eller anden
grund ikke vil virke længere. Jeg har haft den til at virke tidligere, men
efter at have rettet den til, virker den ikke længere. Der er i alt 2 filer.
Den første viser hvilke varer der er til rådighed, og den anden side
sammenregner priser m.m. Af en eller anden grund kan indkøbskurven ikke
fatte at der bliver lagt varer ned i den. Er der en der kan gennemskue
problemet? Indkøbskurven er lavet i XML, og det har jeg ikke så meget
forstand, men jeg har tjecket den på kryds og tværs, og burde umiddelbart
virke. Den gør det dog ikke. Koderne følger...
| |
Flemming C. Lund (08-12-2001)
| Kommentar Fra : Flemming C. Lund |
Dato : 08-12-01 21:16 |
|
<% @LANGUAGE = "VBScript" %>
<% Option Explicit %>
<%
Dim objConn, objRS, strQ, DSN, Conn
%>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("../seniornet.mdb")
Conn.Open DSN
strQ = "SELECT Produkt_Id, Produkt, Forklaring, Pris FROM Indkoeb WHERE
Kategori = 'Drikkevarer';"
Set objRS = Conn.Execute(strQ)
%>
<html>
<head>
<title>Køb ind med SeniorNET</title>
<META NAME="Generator" CONTENT="Stone's WebWriter 3">
<link rel="stylesheet" type="text/css" href="../css/stylesheet.css">
</head>
<body bgcolor=#d8c89e>
<b><h2>Følgende varer er tilgængelige hos din lokale købmand:</h2></b><br>
<table border=0 cellpadding="3">
<tr bgcolor="#889D8A">
<th align="left" width="110" nowrap>Drikkevarer</th>
<th align="left" width="150" nowrap>Forklaring</th>
<th align="left" width="80" nowrap>Pris</th>
</tr>
<%
While Not objRS.EOF
%>
<tr>
<td valign="top" width="80"><a href="indkoeb_bag.asp?id=<%=
objRS("Produkt_Id") %>"><%= Server.HtmlEncode(objRS("Produkt")) %></a></td>
<td valign="top" width="150"><%= objRS("Forklaring") %></td>
<td valign="top" width="80"><%= objRS("Pris") %></td>
</tr>
<%
objRS.MoveNext
Wend
%>
<%
Conn.close
Set Conn = Nothing
%>
</table>
</body>
</html>
| |
Flemming C. Lund (08-12-2001)
| Kommentar Fra : Flemming C. Lund |
Dato : 08-12-01 21:17 |
|
<% Response.Buffer = True %>
<!--#include file="connect2db.inc"-->
<% Function LoadXMLBag()
Set XMLDoc = Server.CreateObject("Microsoft.XMLDOM")
If Not IsEmpty(Session("BagItems")) Then
XMLDoc.loadXML CStr(Session("BagItems"))
Set BagItems = XMLDoc.documentElement
Else
Set BagItems = XMLDoc.createElement("BagItems")
Set XMLDoc.documentElement = BagItems
End If
Set LoadXMLBag = BagItems
End Function
Sub UnloadXMLBag(BagItems)
Session("BagItems") = Empty
Set BagItems = Nothing
End Sub
Sub AddtlProduct(nProdukt_Id, BagItems)
bValid = True
If "" = nProdukt_Id Or Not IsNumeric(nProdukt_Id) Then
bValid = False
Else
Set objRS = objConn.Execute("SELECT Produkt_Id, Produkt, Forklaring, Pris
FROM Indkoeb WHERE Produkt='" & nProdukt_Id & "'")
If objRS.EOF And objRS.BOF Then
bValid = False
Else
avarProduct = objRS.GetRows()
End If
objConn.Close
Set objRS = Nothing
Set objConn = Nothing
End If
' if the product was ok, add it to the bag
If bValid Then
AddProductToBag avarProduct, BagItems
End If
End Sub
'
Sub AddProductToBag(avarProduct, BagItems)
Set XMLDoc = BagItems.ownerDocument
Set nodeFind = BagItems.selectNodes("product[@produkt_id='" & nProdukt_Id &
"']")
If Not nodeFind.length > 0 Then
Set product = XMLDoc.createElement("product")
Set attr = XMLDoc.createAttribute("produkt")
attr.Text = avarProduct(0,0)
product.attributes.setNamedItem(attr)
Set attr = XMLDoc.createAttribute("forklaring")
attr.Text = Server.HtmlEncode(avarProduct(1,0))
product.attributes.setNamedItem(attr)
Set attr = XMLDoc.createAttribute("pris")
attr.Text = Server.HtmlEncode(avarProduct(2,0))
product.attributes.setNamedItem(attr)
Set attr = XMLDoc.createAttribute("produkt_id")
attr.Text = Server.HtmlEncode(avarProduct(3,0))
product.attributes.setNamedItem(attr)
product.text = "1"
BagItems.appendChild(product)
' Manglende kode der håndterer hvis produktet findes i kurven allerede:'
Else
currentQty = CInt(nodeFind.item(0).text)
nodeFind.item(0).text = currentQty + 1'
End If
End Sub
Sub Out(strOut)
Response.Write strOut
End Sub
''
Sub PrintBag(BagItems)
Out "<FORM METHOD=""POST"" ACTION="""
Out Request.ServerVariables("SCRIPT_NAME") & """>"
Out "<TABLE><TR><TH>Antal</TH><TH COLSPAN=2>"
Out "Produkt</TH><TH>Forklaring</TH><TH>Pris</TH>"
Out "</TR>" & vbCrLf
For Each item In BagItems.childNodes
Out "<TR><TD><input type=""TEXT"" name=""Qty"
Out item.attributes.getNamedItem("produkt_id").text
Out """ VALUE=""" & item.text & """ SIZE=""3"">" & "</td>"
Out "<td>" & item.attributes.getNamedItem("produkt").text & "</td>"
Out "<TD>" & item.attributes.getNamedItem("forklaring").text & "</TD>"
nUnitPrice = CDbl(item.attributes.getNamedItem("pris").text) * 16
nSubTotal = CInt(item.text) * nUnitPrice
nTotal = nTotal + nSubTotal
Out "<TD>" & FormatCurrency(nUnitPrice) & "</TD>"
Out "<TD><B>" & FormatCurrency(nSubTotal) & "</B></TD>"
Out "</TR>" & vbCRLF
Next
Out "<TR><TD COLSPAN=5><HR></TD></TR>"
Out "<TR><TD COLSPAN=3></TD><TD><B>Total:</B></TD>"
Out "<TD><B>" & FormatCurrency(nTotal) & "</B></TD></TR>" & vbCrLf
Out "<TR><TD COLSPAN=5 ALIGN=""RIGHT"">"
Out "<INPUT TYPE=SUBMIT NAME=""DO"" VALUE=""Indkøb mere""> "
Out "<INPUT TYPE=SUBMIT NAME=""DO"" VALUE=""Genoptælling""> "
Out "<INPUT TYPE=SUBMIT NAME=""DO"" VALUE=""Afslut indkøb"">"
Out "</TD></TR></TABLE></FORM>"
End Sub
Sub InsertOrderIntoBase(BagItems, oDB)
idag = CDbl(Timer)
OrdreIdFraTid = Fix(idag)
If Session("userLoggedIn") <> 1 Then
Response.Redirect("login.asp")
Else
insertSQL = "INSERT INTO INDKOEB_ORDRE (Nr, RegDato, Kunde_Id) VALUES (" &
OrdreIdFraTid & ", '" & Now & "', " & Session("Bruger_Id") & " );"
oDB.Execute(insertSQL)
Session("ordrenr") = OrdreIdFraTid
Set items = BagItems.selectNodes("//product")
For Each item In items
insertSQL = "INSERT INTO INDKOEB_INDHOLD (OrdreNr, Vare_Id, Antal) VALUES
(" & OrdreIdFraTid & ", " & item.attributes.getNamedItem("produkt_id").text
& ", " & item.text & ");"
oDB.execute(insertSQL)
Next
End If
End Sub
Sub RecalcBag(BagItems)
For Each item in BagItems.childNodes
nQty = Trim(Request.Form("Qty" &
item.attributes.getNamedItem("produkt_id").text))
If "" <> nQty And IsNumeric(nQty) Then
If nQty < 1 Then
BagItems.removeChild item
Else
item.text = nQty
End If
End If
Next
End Sub
%>
<html>
<head>
<title>Indkøbskurv</title>
<link rel="stylesheet" type="text/css" href="../css/stylesheet.css">
</head>
<body bgcolor="#d8c89e">
<%
' get or create the bag
Set BagItems = LoadXMLBag()
' add or modify products
If Request.ServerVariables("CONTENT_LENGTH") > 0 Then
Select Case Trim(Request.Form("DO"))
Case "Indkøb mere"
Response.Redirect "indkoeb.asp"
Case "Genoptælling"
RecalcBag BagItems
Case "Afslut indkøb"
If Session("userLoggedIn") = 1 Then
RecalcBag BagItems
InsertOrderIntoBase BagItems, objConn
UnloadXMLBag BagItems
Response.Redirect("ordregemt.asp")
Else
Response.Redirect("login.asp")
End If
End Select
Else
' products are added using the query string
nProdukt_Id = Trim(Request.QueryString("id"))
AddtlProduct nProdukt_Id, BagItems
End If
Session("BagItems") = BagItems.XML
If BagItems.hasChildNodes Then
PrintBag BagItems
Else
Response.Write "Beklager, du har ikke nogen varer i
indkøbskurven!<br><br>Put nogen i <a href='indkoeb.asp'>her</a>."
End If
%>
</body>
</html>
| |
|
|